首先說一下servlet的生命週期:例項化,初始init,接收請求service,銷毀destroy;
spring上下文中的bean生命週期也類似,如下:
(1)例項化bean:
(2)設定物件屬性(依賴注入):
(3)處理aware介面:
①如果這個bean已經實現了beannameaware介面,會呼叫它實現的setbeanname(string beanid)方法,此處傳遞的就是spring配置檔案中bean的id值;
②如果這個bean已經實現了beanfactoryaware介面,會呼叫它實現的setbeanfactory()方法,傳遞的是spring工廠自身。
(4)beanpostprocessor:
如果想對bean進行一些自定義的處理,那麼可以讓bean實現了beanpostprocessor介面,那將會呼叫postprocessbeforeinitialization(object obj, string s)方法。
(5)initializingbean 與 init-method:
如果bean在spring配置檔案中配置了 init-method 屬性,則會自動呼叫其配置的初始化方法。
(6)如果這個bean實現了beanpostprocessor介面,將會呼叫postprocessafterinitialization(object obj, string s)方法;由於這個方法是在bean初始化結束時呼叫的,所以可以被應用於記憶體或快取技術;
以上幾個步驟完成後,bean就已經被正確建立了,之後就可以使用這個bean了。(7)disposablebean:
當bean不再需要時,會經過清理階段,如果bean實現了disposablebean這個介面,會呼叫其實現的destroy()方法;
(8)destroy-method:
最後,如果這個bean的spring配置中配置了destroy-method屬性,會自動呼叫其配置的銷毀方法。
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...