spring bean的生命週期是spring面試熱點問題。這個問題即考察對spring的微觀了解,又考察對spring的巨集觀認識,想要答好並不容易!本文希望能夠從原始碼角度入手,幫助面試者徹底搞定spring bean的生命週期。
是的,spring bean的生命週期只有這四個階段。把這四個階段和每個階段對應的擴充套件點糅合在一起雖然沒有問題,但是這樣非常凌亂,難以記憶。要徹底搞清楚spring的生命週期,首先要把這四個階段牢牢記住。例項化和屬性賦值對應構造方法和setter方法的注入,初始化和銷毀是使用者能自定義擴充套件的兩個階段。在這四步之間穿插的各種擴充套件點,稍後會講。
例項化 instantiation
屬性賦值 populate
初始化 initialization
銷毀 destruction
例項化 -> 屬性賦值 -> 初始化 -> 銷毀
主要邏輯都在docreate()方法中,邏輯很清晰,就是順序呼叫以下三個方法,這三個方法與三個生命週期階段一一對應,非常重要,在後續擴充套件介面分析中也會涉及。
createbeaninstance() -> 例項化
populatebean() -> 屬性賦值
initializebean() -> 初始化
/ 忽略了無關**protected object docreatebean(final string beanname, final rootbeandefinition mbd, final @nullable object args)
throws beancreationexception
// initialize the bean instance.
object exposedobject = bean;
try
}
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...