1. 程式人生 > >bean的singleton(沒有看到生命周期範圍??)

bean的singleton(沒有看到生命周期範圍??)

obj req release .cn tle cep page follow 對象的引用

4.5.1 The singleton scope

Only one shared instance of a singleton bean is managed, and all requests for beans with an id or ids matching that bean definition result in that one specific bean instance being returned by the Spring container.

To put it another way, when you define a bean definition and it is scoped as a singleton, the Spring IoC container creates exactly one

instance of the object defined by that bean definition. This single instance is stored in a cache of such singleton beans(這種實例存儲在這種單例beans的緩存中), and all subsequent requests and references for that named bean return the cached object.(所有後續的請求和對bean對象的引用都返回緩存的對象) 單例模式的特點

Figure 4.2.

技術分享

技術分享

技術分享

Spring’s concept of a singleton bean differs from the Singleton pattern as defined in the Gang of Four (GoF) patterns book. The GoF Singleton hard-codes the scope of an object such that one and only one

instance of a particular class is created per ClassLoader. The scope of the Spring singleton is best described as per container and per bean. This means that if you define one bean for a particular class in a single Spring container, then the Spring container creates one and only one instance of the class defined by that bean definition. The singleton scope is the default scope in Spring
. To define a bean as a singleton in XML, you would write, for example:

<bean id="accountService" class="com.foo.DefaultAccountService"/>

<!-- the following is equivalent, though redundant (singleton scope is the default) -->
<bean id="accountService" class="com.foo.DefaultAccountService" scope="singleton"/>

bean的singleton(沒有看到生命周期範圍??)