阅读本春季单周期
当一个bean是一个独生子,一个 bean的共享实例将 管理,用于与ID豆 或ID匹配豆 定义将所有请求导致返回一个 特定的bean实例。
进行管理......
这是什么意思?
如果只有一个目标,比任何修改这个对象将导致每个另一个
试图让这个bean将返回一个修改后的实例?
阅读本春季单周期
当一个bean是一个独生子,一个 bean的共享实例将 管理,用于与ID豆 或ID匹配豆 定义将所有请求导致返回一个 特定的bean实例。
进行管理......
这是什么意思?
如果只有一个目标,比任何修改这个对象将导致每个另一个
试图让这个bean将返回一个修改后的实例?
在这种情况下的管理意味着Spring将对班级应用一定的生命周期(在此阅读更多:http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/beans.html#beans-factory-nature)。总的来说,这个术语的用意是强调你不必关心类的技术问题,比如实例化,实例数量,实例生命周期等等。所有这些在春天都会为你管理。
不是修改的副本,而是对唯一(修改的)实例的引用。不应该复制Singletons。
我不认为“托管”应该指的是除了保留“只有一个bean的共享实例”之外的任何特殊处理。
是的,这正是我所说的。因此,如果一个Web应用程序副本将更改此对象,并且另一个Web应用程序实例将尝试获取一个Bean,则第二个Web应用程序将会看到所有的修改? – EugeneP 2010-05-07 11:47:14
“托管”文档意味着“由此ApplicationContext/BeanFactory管理”。所以你可能会在Spring之外创建许多bean的实例,但Spring只会创建一个实例,并且只要在将它连接到其他bean时调用getBean(),就可以返回对该实例的引用。 @EugeneP你是什么意思的“另一个Web应用程序实例”?每个Web应用程序本质上都是一个独立的容器,除非您已经设置了一些特殊的配置,否则您将在一个Web应用程序中有一个Spring bean工厂,而在第二个Web应用程序中有第二个实例。 – 2010-05-07 11:50:54
@EugeneP,正好。限制多线程程序中的可见性问题 - 我不知道Spring是如何(或者是否)处理这些问题的,但我想你必须确保你的单例是线程安全的。 – 2010-05-07 11:52:32