spring bean生命周期

image
spring生命周期里调用的方法很多,很难记忆。根据spring方法的命名和相关注释,可以找出生命周期中几个关键节点:

  1. 实例化Instantiation,调用构造方法
  2. 属性填充set properties,调用set方法
  3. 初始化Initialization,执行一些额外的特定需要的初始化
    1. 用户自定义init-method
    2. InitializingBeanafterPropertiesSet

生命周期里的这些方法都是在这三个方法前后调用。

先看BeanPostProcessor接口的两个方法,postProcessBeforeInitializationpostProcessAfterInitialization分别在初始化前后调用

再看InitializationAwareBeanPostProcessorpostProcessBeforeInstantiationpostProcessAfterInstantiation方法,分别在实例化前后调用,另外它还继承了BeanPostProcessor接口,所以如果也override它的两个方法,那么也会像上面一样执行,他还有一个方法postProcessProperties,这个方法在属性填充前执行

然后是各种以Aware结尾接口的方法,比如BeanNameAwaresetBeanName,BeanFactoryAwaresetBeanFactory,ApplicationContextAwaresetApplicationContext,BeanClassLoaderAwaresetBeanClassLoader等,这些方法都是在完成属性填充后,初始化前执行

还剩两个方法,一个是BeanFactoryPostProcessorpostProcessBeanFactory,和自定义的destroy方法,前者在载入beanDefinition后实例化前调用,后者在实例销毁时调用

posted @ 2021-05-14 18:58  我吃水煮虾  阅读(49)  评论(0编辑  收藏  举报