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