直接寫個程式看一下,首先建立乙個person類:
在配置檔案中宣告乙個person的bean:
在bean的宣告裡設定init-method和destroy-method屬性,為bean指定初始化和銷毀方法,直接執行一下:
通過結果可以看出首先執行的是構造器,然後執行屬性setter方法,再執行指定的初始化方法init,然後bean就可以使用了,然後關閉ioc容器後,又執行了指定的銷毀方法destroy。總結來說:
1. 通過構造器或者工廠方法建立bean例項
2. 為bean的屬性設定值和對其他bean的引用『
3. 呼叫bean的初始化方法
3. bean可以使用了
4. 當容器關閉時,呼叫bean的銷毀方法
bean的後置處理器允許在呼叫初始化方法的前後進行對bean的額外處理,只要實現beanpostprocessor介面,這個介面裡只要實現兩個方法,postprocessbeforeinitialization:在bean的初始化方法執行之前執行,postprocessafterinitialization:在bean的初始化方法執行之後才執行。
我們需要自己寫乙個類來實現beanpostprocessor介面,實現2個方法:
注意最後要把bean物件返回,當然這裡你可以修改物件的屬性,甚至可以new乙個新的物件進行替換。
然後還要在配置檔案中宣告乙個bean,這裡不需要寫id,spring可以自動識別,就這麼配置就可以:
最後讓我們執行一下:
所以只是在bean的初始化前後加了兩個方法,生命週期就變成了這樣:
1. 通過構造器或者工廠方法建立bean例項
2. 為bean的屬性設定值和對其他bean的引用
3. 呼叫postprocessbeforeinitialization方法
4. 呼叫bean的初始化方法
5. 呼叫postprocessafterinitialization方法
6. bean可以使用
7. 當容器關閉時,呼叫bean的銷毀方法
注:bean的後置處理器是針對所有bean的,如果要針對對應的bean設定,那就要在方法的內部進行判斷。
Spring Bean生命週期
1.容器尋找bean的定義資訊並且將其實例化。2.受用依賴注入,spring按照bean定義資訊配置bean的所有屬性。3.如果bean實現了beannameaware介面,工廠呼叫bean的setbeanname 方法傳遞bean的id。4.如果bean實現了beanfactoryaware介面,...
spring bean生命週期
生命週期 定義,初始化,使用,銷毀 一.初始化 方法1.實現org.springframework.beans.foctory.initializingbean介面,覆蓋afterpropertiesset方法。系統會自動查詢afterpropertiesset方法,執行其中的初始化操作 方法2.配...
Springbean生命週期
springbean的完整生命週期大致如下 1 首先例項化 beanfactorypostprocessor的實現類,執行它的postprocessorbeanfactory方法 2 例項化beanpostprocessor 的實現類 3 例項化 instantiationawarebeanpost...