Spring的Bean的生命周期:
- Bean的BeanDefiniton在解析,由Annotation或者XML、Properties加载,解析并转化为BeanDefiniton.
- 将BeanDefiniton注册到BeanFactory的容器.然后通过BeanFactoyPostProcess,可以Bean的BeanDefinition的修改.
- 接下来就是对Bean的实例化的前置处理、实例化、后置处理,然后是Aware回调,即是ApplicationContextAwareProcessor的处理,主要对EnvironmentAware、EmbeddedValueResolverAware、ResourceLoaderAware、ApplicationEventPublisherAware、MessageSourceAware、ApplicationContextAware的接口的回调.
- Bean的实例化,调用createBeanInstance进行实例化创建对象。
- 调用populateBean进行属性填充.
- 进行Aware接口的回调,主要是BeanNameAware、BeanClassLoaderAware、 BeanFactoryAware的回调.
- 调用BeanPostProcess postProcessBeforeInitialization方法.
- 调用InitializingBean的afterPropertiesSet方法.
- 执行自定义的init-method方法.
- 调用BeanPostProcess postProcessAfterInitialization方法,返回 BeanWrapper对象.
- 销毁bean的销毁前置处理.
- 销毁bean.
- 销毁bean的后置处理.
总结 今天主要对Spring的bean的生命周期的各个流程的梳理,后续, 会对各个流程的 源码的分析.