第一章~第一節spring bean的生命週期

看到上面的這張圖可能大家就能很清晰的理解spring是如何初始化beans及管理benas的生命週期了,那下面就具體的說下這個整體流程。

傳統的java應用中,bean的生命週期很簡單。關鍵字new初始化bean然後待用,一旦這個bean不再使用則進入了垃圾回收階段進行處理。那麼

spring是如何管理?對比之下,bean的生命週期在spring容器的管理之中更加縝密(即分步驟更加明確)了。理解spring是如何管理bean的生命

週期是很重要的,因爲你可能想要利用spring給你提供的選擇來初始化你自己想要的(即帶有自己特色的)bean。上圖顯示了spring容器啓動並

加載bean之後的生命週期。

就像你看到的那樣,一個bean factory做了如下的幾步在bean可以使用之前。那麼我們就更詳細的分解下上圖。

1】spring實例化bean開始

2】spring爲bean的屬性注入值或者相應的引用

3】如果bean實現了BeanNameAware接口,spring將傳遞這個bean的id到setBeanName()的方法中

4】如果bean實現了BeanFactoryAware接口,spring將調用setBeanFactory()方法並傳遞bean factory本身進去

5】如果bean實現了ApplicationContextAware接口,spring將調用setApplicationContext()方法,並通過一個引用來關閉應用上下文。

6】如果任何一個bean實現了BeanPostProcessor接口,spring將調用postProcessBeforeInitialization()方法

7】如果任何的bean實現了InitializingBean接口,spring將調用afterPropertiesSet()方法。相似的,如果一個bean聲明init-method方法,那麼指定的方法將被調用

8】如果任何一個bean實現了BeanPostProcessor接口,spring將調用postProcessAfterInitialization()方法

9】到此,bean就可以使用了在應用中,並且保持在應用上下文中直到應用被銷燬。

10】如果任何bean實現了DisposableBean接口,spring將調用destroy()方法。同樣如果任何一個bean聲明瞭destroymethod()方法,指定的方法將被調用。

大概的流程就是這樣。其中需要實踐才能真正的理解。到此第一節結束。


發佈了51 篇原創文章 · 獲贊 66 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章