1. Instantiate 實(shí)例化一個(gè)Bean
↓
2. Populate properties 設(shè)置Bean的屬性值
↓
3*. 調(diào)用BeanNameAware的setBeanName()
↓
4*. BeanFactoryAware的setBeanFactory()
↓
5*. 調(diào)用BeanPostProcessors的ProcessBeforeInitialization()
↓
6*. 調(diào)用InitializingBean的afterPropertiesSet()
↓
7. 調(diào)用調(diào)用Bean定義的init-method
↓
8*. BeanPostProcessors的ProcessaAfterInitialization()
↓
[上面是Bean的創(chuàng)建階段]
[Bean的正常使用階段]
[下面是Bean的銷毀階段,例如容器銷毀的時(shí)候]
9. 調(diào)用DisposableBean的destroy()
↓
10. 調(diào)用Bean中自定義的destroy-method
其中,Bean自身的方法包括:本身正常使用的方法,通過或者@Bean配置的init-method和destroy-method方法。在一般的開發(fā)過程中,我們只需要關(guān)心Bean自身的方法即可。剩余的都是Bean級(jí)別的生命周期的接口方法,包括BeanNameAware、BeanFactoryAware、InitializingBean和DiposableBean這些接口的方法,只有Bean實(shí)現(xiàn)了這些接口,才會(huì)在生命周期中執(zhí)行接口的相關(guān)方法。

同時(shí)感謝以下博文,寫作時(shí)作為參考借鑒。