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接口
BeanNameAwareBeanClassLoaderAwareBeanFactoryAwareAware方法的回调EnvironmentAwareEmbeddedValueResolverAwareResourceLoaderAwareApplicationEventPublisherAwareMessageSourceAwareApplicationContextAwareBean后置处理器的初始化之前的方法
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方法的回调(
BeanNameAwareBeanClassLoaderAwareBeanFactoryAware)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生命周期/