Spring bean的生命週期

正確理解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容器實例傳入;

5. 如果bean實現了ApplicationContextAware接口,Spring將調用setApplicationContext()方法,將bean所在的應用上下文的引用傳入進來;

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聲明瞭銷燬方法,該方法也會被調用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章