Spring bean的生命週期

Spring bean的生命週期很是重要,由於有的時候可能會利用Spring提供的擴展點來自定義bean的建立過程,同時Spring bean的生命週期也是面試時常常被提起的問題,因此寫篇文章總結一下。面試

先用一張圖來展現一下bean裝載到Spring應用上下文中的一個典型的生命週期過程:post

 

 

 

 

1. Spring對bean進行實例化;.net

2. Spring將值和bean的引用注入到bean對應的屬性中;blog

3. 若是bean實現了BeanNameAware接口,Spring將bean的ID傳遞給setBeanName()方法;接口

4. 若是bean實現了BeanFactoryAware接口,Spring將調用setBeanFactory()方法,將BeanFactory容器實例傳入;生命週期

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

6. 若是bean實現了BeanPostProcessor接口,Spring將調用它們的postProcessorBeforeInitialization()方法;io

7. 若是bean實現了InitializingBean接口,Spring將調用它們的afterPropertiesSet()方法。相似地,若是bean使用init-method聲明瞭初始化方法,該方法也會被調用;容器

8. 若是bean實現了BeanPostProcessor接口,Spring將調用它們的postProcessorAfterInitialization()方法;擴展

9. 此時,bean已經準備就緒,能夠被應用程序使用了,它們將一直駐留在應用上下文中,直到該應用上下文被銷燬;

10. 若是bean實現了DisposableBean接口,Spring將調用它們的destroy()方法。一樣,若是bean使用了destroy-method聲明瞭銷燬方法,該方法也會被調用。原文:https://blog.csdn.net/hyxhbj1/article/details/80952946

相關文章
相關標籤/搜索