Spring Bean生命週期

2021-06-21 16:13:57 字數 1126 閱讀 5581

1.容器尋找bean的定義資訊並且將其實例化。

2.受用依賴注入,spring按照bean定義資訊配置bean的所有屬性。

3.如果bean實現了beannameaware介面,工廠呼叫bean的setbeanname()方法傳遞bean的id。

4.如果bean實現了beanfactoryaware介面,工廠呼叫setbeanfactory()方法傳入工廠自身。

5.如果beanpostprocessor和bean關聯,那麼它們的postprocessbeforeinitialzation()方法將被呼叫。

6.如果bean指定了init-method方法,它將被呼叫。

7.最後,如果有beanpsotprocessor和bean關聯,那麼它們的postprocessafterinitialization()方法將被呼叫。 

到這個時候,bean已經可以被應用系統使用了,並且將被保留在bean factory中知道它不再需要。

有兩種方法可以把它從bean factory中刪除掉。

1.如果bean實現了disposablebean介面,destory()方法被呼叫。

2.如果指定了訂製的銷毀方法,就呼叫這個方法。

只有singleton行為的bean接受容器管理生命週期。 

non-singleton行為的bean,spring容器僅僅是new的替代,容器只負責建立。

對於singleton bean,spring容器知道bean何時例項化結束,何時銷毀, 

spring可以管理例項化結束之後,和銷毀之前的行為,管理bean的生命週期行為主要未如下兩個時機: 

bean全部依賴注入之後 

bean即將銷毀之前

1)依賴關係注入後的行為實現: 

有兩種方法:a.編寫init方法  b.實現initializingbean介面 

afterpropertiesset和init同時出現,前者先於後者執行,使用init方法,需要對配置檔案加入init-method屬性

2)bean銷毀之前的行為 

有兩種方法:a.編寫close方法  b.實現disposablebean介面 

destroy和close同時出現,前者先於後者執行,使用close方法,需要對配置檔案加入destroy-method屬性

spring bean生命週期

生命週期 定義,初始化,使用,銷毀 一.初始化 方法1.實現org.springframework.beans.foctory.initializingbean介面,覆蓋afterpropertiesset方法。系統會自動查詢afterpropertiesset方法,執行其中的初始化操作 方法2.配...

Springbean生命週期

springbean的完整生命週期大致如下 1 首先例項化 beanfactorypostprocessor的實現類,執行它的postprocessorbeanfactory方法 2 例項化beanpostprocessor 的實現類 3 例項化 instantiationawarebeanpost...

spring bean生命週期

defaultlistablebeanfactory bean工廠類 1 dogetbean 2 transformedbeanname 獲取beanname 過濾 和別名替換 3getsingleton 從單例快取中獲取例項 這裡涉及到迴圈依賴問題 4getparentbeanfactory 獲取...