1. Instantiate 实例化一个Bean
↓
2. Populate properties 设置Bean的属性值
↓
3*. 调用BeanNameAware的setBeanName()
↓
4*. BeanFactoryAware的setBeanFactory()
↓
5*. 调用BeanPostProcessors的ProcessBeforeInitialization()
↓
6*. 调用InitializingBean的afterPropertiesSet()
↓
7. 调用调用Bean定义的init-method
↓
8*. BeanPostProcessors的ProcessaAfterInitialization()
↓
[上面是Bean的创建阶段]
[Bean的正常使用阶段]
[下面是Bean的销毁阶段,例如容器销毁的时候]
9. 调用DisposableBean的destroy()
↓
10. 调用Bean中自定义的destroy-method
其中,Bean自身的方法包括:本身正常使用的方法,通过或者@Bean配置的init-method和destroy-method方法。在一般的开发过程中,我们只需要关心Bean自身的方法即可。剩余的都是Bean级别的生命周期的接口方法,包括BeanNameAware、BeanFactoryAware、InitializingBean和DiposableBean这些接口的方法,只有Bean实现了这些接口,才会在生命周期中执行接口的相关方法。
同时感谢以下博文,写作时作为参考借鉴。