spring singleton scope - 每个bean每个容器

时间:2012-10-16 15:22:59

标签: java spring

我在提问时提到了这个问题:

spring singleton scope

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");

beans.xml中:

<bean id="myBean" class="MyBean"/>

然后myobj==myobj1将变为true.Means都指向同一个实例

对于每个bean 部分短语每个容器每个bean ,我有点困惑。我正确地关注每个豆

如果我们喜欢

ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml")
MyBean myobj=(MyBean)context.getBean("myBean"); 
MyBean myobj1=(MyBean)context.getBean("mySecondBean");

beans.xml中:

<bean id="myBean" class="MyBean"/>
<bean id="mySecondBean" class="MyBean"/>

然后myobj==myobj1会出错。意味着它们是两个不同的实例

3 个答案:

答案 0 :(得分:6)

这是正确的。

如果它有帮助,您还可以将Spring bean视为您将使用构造函数在Java代码中手动创建的实例。

通过在Spring XML文件中定义bean,该bean(Instance)在Spring的App Context中注册,然后该实例可以传递给代码的其他区域。

通过创建新bean,您可以有效地创建新实例。因此,您可以创建任意数量的同一类bean(实例)

答案 1 :(得分:0)

myBean是对每个bean.getBean(&#34; myBean&#34;)的调用意义上的Spring单例,它将始终返回相同的实例。并且mySecondBean具有不同的id是另一个Spring单例。您可以在同一个ApplicationContext中使用相同类的不同单例bean。

答案 2 :(得分:-1)

是的,你是对的。测试它会告诉你的。