bean的作用域、生命週期
spring 3中為bean定義了5中作用域,分別為singleton(單例)、prototype(原型)、request、session和global session,5種作用域說明如下:
singleton:單例模式,spring ioc容器中只會存在乙個共享的bean例項,無論有多少個bean引用它,始終指向同一物件。singleton作用域是spring中的預設作用域,也可以顯示的將bean定義為singleton模式,配置為:
prototype:原型模式,每次通過spring容器獲取prototype定義的bean時,容器都將建立乙個新的bean例項,每個bean例項都有自己的屬性和狀態,而singleton全域性只有乙個物件。根據經驗,對有狀態的bean使用prototype作用域,而對無狀態的bean使用singleton作用域。
request:在一次http請求中,容器會返回該bean的同一例項。而對不同的http請求則會產生新的bean,而且該bean僅在當前http request內有效。
session:在一次http session中,容器會返回該bean的同一例項。而對不同的session請求則會建立新的例項,該bean例項僅在當前session內有效。
global session:在乙個全域性的http session中,容器會返回該bean的同乙個例項,僅在使用portlet context時有效。
經過如上對bean作用域的介紹,接下來將在bean作用域的基礎上講解bean的生命週期。
spring容器可以管理singleton作用域下bean的生命週期,在此作用域下,spring能夠精確地知道bean何時被建立,何時初始化完成,以及何時被銷毀。而對於prototype作用域的bean,spring只負責建立,當容器建立了bean的例項後,bean的例項就交給了客戶端的**管理,spring容器將不再跟蹤其生命週期,並且不會管理那些被配置成prototype作用域的bean的生命週期。spring中bean的生命週期的執行是乙個很複雜的過程,讀者可以利用spring提供的方法來定製bean的建立過程。spring容器在保證乙個bean例項能夠使用之前會做很多任務作:
本篇部落格**自:
Spring中Bean的作用域
bean作用域 作用域描述 singleton 在每個spring ioc容器中乙個bean定義對應乙個物件例項。整個容器中只有該bean的唯一例項 prototype 乙個bean定義對應多個物件例項。request session global session 因為這樣在配置中的任何錯誤就會即刻...
spring中bean的作用域
如何使用spring的作用域 這裡的scope就是用來配置spring bean的作用域,它標識bean的作用域。在spring2.0之前bean只有2種作用域即 singleton 單例 non singleton 也稱prototype spring2.0以後,增加了session reques...
Spring中bean的作用域
1 singleton作用域 當乙個bean的作用域設定為singleton,spring ioc容器只會建立該bean定義的唯一例項。2 prototype prototype作用域部署的bean,每一次請求都會產生乙個新的bean例項,相當與乙個new的操作。3 request request表...