导读
1、BeanFactory 是怎样处理 Bean 生命周期?
BeanFactory 的默认实现为 DefaultListableBeanFactory,其中 Bean生命周期与方法映射如下:
(1) BeanDefinition 注册阶段 - registerBeanDefinition
(2) BeanDefinition 合并阶段 - getMergedBeanDefinition
(3) Bean 实例化前阶段 - resolveBeforeInstantiation InstantiationAwareBeanPostProcessor#postProcessBeforeInstantiation
(4) Bean 实例化阶段 - createBeanInstance
(5) Bean 实例化后阶段 - populateBean InstantiationAwareBeanPostProcessor#postProcessAfterInstantiationhs
(6) Bean 属性赋值前阶段 - populateBean InstantiationAwareBeanPostProcessor#postProcessProperties
(7) Bean 属性赋值阶段 - populateBean
(8) Bean Aware 接口回调阶段 - initializeBean
BeanNameAware 、 BeanClassLoaderAware、 BeanFactoryAware EnvironmentAware、 EmbeddedValueResolverAware 、ResourceLoaderAware ApplicationEventPublisherAware、 MessageSourceAware 、ApplicationContextAware
(9) Bean 初始化前阶段 - initializeBean
BeanPostProcessor#postProcessBeforeInitialization
(10) Bean 初始化阶段 - initializeBean
a. @PostConstruct 标注方法
b. 实现 InitializingBean 接口的 afterPropertiesSet() 方法
c. 自定义初始化方法
(11) Bean 初始化后阶段 - initializeBean
BeanPostProcessor#postProcessAfterInitialization
(12) Bean 初始化完成阶段 - preInstantiateSingletons
SmartInitializingSingleton#afterSingletonsInstantiated
(13) Bean 销毁前阶段 - destroyBean
DestructionAwareBeanPostProcessor#postProcessBeforeDestruction
(14) Bean 销毁阶段 - destroyBean
b.@PreDestroy 标注方法
c.实现 DisposableBean 接口的 destroy() 方法
c.自定义销毁方法