Spring學習之 Bean的生命週期

2021-09-14 05:18:25 字數 1231 閱讀 3968

**:

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內有效。

,針對每一次http請求,spring容器根據該bean的定義建立乙個全新的例項,且該例項僅在當前http請求內有效,而其它請求無法看到當前請求中狀態的變化,當當前http請求結束,該bean例項也將會被銷毀。

session:在一次http session中,容器會返回該bean的同一例項。而對不同的session請求則會建立新的例項,該bean例項僅在當前session內有效。

,同http請求相同,每一次session請求建立新的例項,而不同的例項之間不共享屬性,且例項僅在自己的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例項能夠使用之前會做很多任務作。

Java面試之Spring的bean的生命週期

一 bean的定義 spring通常通過配置檔案定義bean。如 xmlns xsi xsi schemalocation spring beans 2.0.xsd helloworld 這個配置檔案就定義了乙個標識為 helloworld 的bean。在乙個配置文件中可以定義多個bean。二 be...

Spring之Bean的裝配

spring裝配工廠是為了相容以前沒有spring的時候,已經寫好的工廠 裝配set裝配 property 構造裝配 constructor arg 集合裝配 aray list set 但實際上是通用的 bean的裝配可以理解為依賴關係注入bean的裝配方式即bean依賴注入的方式.spring容...

Spring 學習之 bean的前 後處理

在bean被建立以及裝配後,beanpostprocessor 介面為你提供了二次機會來修改這個bean。public inte ce beanpostprocessor public class fuddifier implements beanpostprocessor public objec...