每个容器每个bean的JavaSpring单例作用域
我是针对我的问题提出这个问题的:
参考手册中将Spring单例定义为每个容器每个bean
每个容器表示如果我们愿意:
ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml")
MyBean myobj=(MyBean)context.getBean("myBean"); //myBean is of singleton scope.
MyBean myobj1=(MyBean)context.getBean("myBean");
豆子。xml:
<bean id="myBean" class="MyBean"/>
然后myobj==myobj1
就会变成现实。表示两者都指向同一实例
对于每个bean的部分短语每个容器每个bean的我有点困惑。我对每个bean的的以下描述是否正确:
如果我们喜欢
ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml")
MyBean myobj=(MyBean)context.getBean("myBean");
MyBean myobj1=(MyBean)context.getBean("mySecondBean");
豆子。xml:
<bean id="myBean" class="MyBean"/>
<bean id="mySecondBean" class="MyBean"/>
然后myobj==myobj1
将变成false。意味着它们是两个不同的实例
# 1 楼答案
没错
如果有帮助的话,您还可以将Springbean视为使用构造函数在Java代码中手动创建的实例
通过在SpringXML文件中定义bean,该bean(实例)将注册到Spring的应用程序上下文中,然后该实例可以传递到代码的其他区域
通过创建一个新bean,实际上就是在创建一个新实例。因此,您可以创建同一类的任意数量的bean(实例)
# 2 楼答案
myBean在每次调用beans时都是一个Spring singleton。getBean(“myBean”)将始终返回相同的实例。而MySecondBean拥有不同的id则是另一个Spring singleton。在同一应用程序上下文中,可以有同一类的不同单例bean
# 3 楼答案
是的,你说得对。测试它会告诉你的