如果我们在同一个xml中为同一个类创建一个具有不同id的新另一个bean,那么Spring会生成另一个单独的bean(在同一个ApplicationContext中)吗? 根据我的理解,单个ApplicationContext中只应该有一个bean实例。
以下示例 -
<bean id="bean1" class="com.myCompany.myPackage.MyClass" scope="singleton" />
<bean id="bean2" class="com.myCompany.myPackage.MyClass" scope="singleton" />
答案 0 :(得分:3)
保持简短:不,单身人士只说你将拥有:“一个共享实例,所有调用getBean都将返回给定的id” (这就是文件说明的内容)。
因此,您可以对应用程序上下文执行任意数量的调用并获取“bean1”,并且您将始终获得相同的实例,但如果您通过“bean2”id调用,则会获得另一个实例。
“单身人士”说你只有一个物体。 现在在非Spring应用程序中,通常每个JVM都有它。 但是在spring应用程序中,让框架管理它。 所以通常你只想定义一个像“MyClass”这样的类,并使用范围单例。
当依赖管理容器(在这种情况下为spring)管理单例时,它比'常规'单例具有很多优点。仅举几例:
但总的来说,它与你的问题没有直接关系。
希望这有帮助
答案 1 :(得分:0)
我确实在 Spring 的单例与 Java 的单例的不同上下文中遇到了同样的问题,我发现 this link 中的 'Dexter' 提供的这个答案更加微妙且易于理解。
此外,this blog here 提供了一个完美的示例,由官方 Spring 文档支持,以便更好地理解。
希望这些指针有帮助。谢谢。