正確理解spring bean的生命週期非常重要,因為有的時候可能會利用spring提供的擴充套件點來自定義bean的建立過程,同時spring bean的生命週期也是面試時經常被提起的問題,所以寫篇文章總結一下。
先用一張圖來展示一下bean裝載到spring應用上下文中的乙個典型的生命週期過程:
1. spring對bean進行例項化;
2. spring將值和bean的引用注入到bean對應的屬性中;
3. 如果bean實現了beannameaware介面,spring將bean的id傳遞給setbeanname()方法;
4. 如果bean實現了beanfactoryaware介面,spring將呼叫setbeanfactory()方法,將beanfactory容器例項傳入;
6. 如果bean實現了beanpostprocessor介面,spring將呼叫它們的postprocessorbeforeinitialization()方法;
7. 如果bean實現了initializingbean介面,spring將呼叫它們的afterpropertiesset()方法。類似地,如果bean使用init-method宣告了初始化方法,該方法也會被呼叫;
8. 如果bean實現了beanpostprocessor介面,spring將呼叫它們的postprocessorafterinitialization()方法;
9. 此時,bean已經準備就緒,可以被應用程式使用了,它們將一直駐留在應用上下文中,直到該應用上下文被銷毀;
10. 如果bean實現了disposablebean介面,spring將呼叫它們的destroy()方法。同樣,如果bean使用了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...