spring bean生命周期
Posted 不下山的小太阳
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring bean生命周期相关的知识,希望对你有一定的参考价值。
spring生命周期里调用的方法很多,很难记忆。根据spring方法的命名和相关注释,可以找出生命周期中几个关键节点:
- 实例化
Instantiation
,调用构造方法 - 属性填充
set properties
,调用set方法 - 初始化
Initialization
,执行一些额外的特定需要的初始化- 用户自定义
init-method
InitializingBean
的afterPropertiesSet
- 用户自定义
生命周期里的这些方法都是在这三个方法前后调用。
先看BeanPostProcessor
接口的两个方法,postProcessBeforeInitialization
和postProcessAfterInitialization
分别在初始化前后调用
再看InitializationAwareBeanPostProcessor
的postProcessBeforeInstantiation
和postProcessAfterInstantiation
方法,分别在实例化前后调用,另外它还继承了BeanPostProcessor
接口,所以如果也override它的两个方法,那么也会像上面一样执行,他还有一个方法postProcessProperties
,这个方法在属性填充前执行
然后是各种以Aware结尾接口的方法,比如BeanNameAware
的setBeanName
,BeanFactoryAware
的setBeanFactory
,ApplicationContextAware
的setApplicationContext
,BeanClassLoaderAware
的setBeanClassLoader
等,这些方法都是在完成属性填充后,初始化前执行
还剩两个方法,一个是BeanFactoryPostProcessor
的postProcessBeanFactory
,和自定义的destroy方法,前者在载入beanDefinition后实例化前调用,后者在实例销毁时调用
以上是关于spring bean生命周期的主要内容,如果未能解决你的问题,请参考以下文章