Spring Bean生命周期
- Spring Bean生命周期涉及的主要类
- Spring Bean生命周期
Spring Bean生命周期涉及的主要类
BeanPostProcessor Bean后置处理器
- postProcessBeforeInitialization初始化之前调用的方法
- postProcessAfterInitialization初始化之后的方法
MergedBeanDefinitionPostProcessor 合并Bean定义的后置处理器
- postProcessMergedBeanDefinitionBean合并定义信息
InstantiationAwareBeanPostProcessor 初始化Bean后置处理器
- postProcessBeforeInstantiation实例化之前的方法
- postProcessProperties处理Bean的属性信息(- postProcessPropertyValues5.1 之前的方法)
- postProcessAfterInstantiation实例化之后的方法
DestructionAwareBeanPostProcessor 销毁Bean后置处理器
- postProcessBeforeDestruction销毁之前的方法
内置的
BeanPostProcessorBean后置处理器
ApplicationContextAwareProcessor处理Aware(EnvironmentAwareEmbeddedValueResolverAwareResourceLoaderAwareApplicationEventPublisherAwareMessageSourceAwareApplicationContextAware)回调方法
CommonAnnotationBeanPostProcessor公共注解(@PostConstruct@PreDestroy@Resource、@WebServiceRef以及@EJB)处理
AutowiredAnnotationBeanPostProcessor注入注解(@Autowired、@Value、@Inject)处理
ConfigurationClassPostProcessor配置类(@Configuration)处理
Aware接口
- BeanNameAware- BeanClassLoaderAware- BeanFactoryAwareAware方法的回调
- EnvironmentAware- EmbeddedValueResolverAware- ResourceLoaderAware- ApplicationEventPublisherAware- MessageSourceAware- ApplicationContextAwareBean后置处理器的初始化之前的方法
InitializingBean 初始化
- afterPropertiesSet属性赋值之后的方法
SmartInitializingSingleton 初始化单例的接口
- afterSingletonsInstantiated单例实例化之后的方法
Spring Bean生命周期
生命周期的代码:
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#doCreateBean完成的代码:
org.springframework.beans.factory.config.ConfigurableListableBeanFactory#preInstantiateSingletons
实例化
- InstantiationAwareBeanPostProcessor#postProcessBeforeInstantiation 实例话之前的调用方法
- 实例化(new方法)
- MergedBeanDefinitionPostProcessor#postProcessMergedBeanDefinition Bean合并定义信息
- InstantiationAwareBeanPostProcessor#postProcessAfterInstantiation
初始化
- InstantiationAwareBeanPostProcessor#postProcessProperties 属性赋值 
- Aware方法的回调( - BeanNameAware- BeanClassLoaderAware- BeanFactoryAware)
- BeanPostProcessor#postProcessBeforeInitialization 初始化之前的调用方法 - 有个顺序的问题 - ApplicationContextAware#setApplicationContext 其他Aware方法的回调(通过BeanPostProcessor#postProcessBeforeInitialization进行调用)内置的,优先级第一
- BeanPostProcessor#postProcessBeforeInitialization 初始化之前的调用方法,第二调用,按照PriorityOrdered、Ordered、其他进行排序
- MergedBeanDefinitionPostProcessor#postProcessBeforeInitialization 最后调用,按照PriorityOrdered、Ordered、其他进行排序
 
- InitializingBean#afterPropertiesSet InitializingBean的属性后置 
- 自定义的init-method 
- BeanPostProcessor#postProcessAfterInitialization 初始化之后的方法 - 顺序跟上面的一致 
完成
- SmartInitializingSingleton#afterSingletonsInstantiated 单例实例化之后的方法
销毁
- DestructionAwareBeanPostProcessor#postProcessBeforeDestruction销毁的后置处理
- DisposableBean#destroy
- 自定义的destroy-method
Import 导入Bean
- Aware方法的回调 BeanClassLoaderAwareBeanFactoryAwareEnvironmentAwareResourceLoaderAware
- 调用对应的方法
Spring Bean生命周期
      http://example.com/2020/05/17/Spring/Spring Bean生命周期/