我在提问时提到了这个问题:
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
会出错。意味着它们是两个不同的实例?
答案 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)
是的,你是对的。测试它会告诉你的。