其他分享
首页 > 其他分享> > 睡前聊一聊"spring bean 生命周期"

睡前聊一聊"spring bean 生命周期"

作者:互联网

spring bean 生命周期=实属初销+2个常见接口+3个Aware型接口+2个生命周期接口

前三个阶段分别在doCreate()中按顺序调对应的方法:
  1. createBeanInstance() -> 实例化
  2. populateBean() -> 属性赋值
  3. initializeBean() -> 初始化
源码:

1、这两个接口功能非常强大,spring内部也常使用它们,其中InntantiationAwareBeanPostProcessor接口继承BeanPostProcessor接口,它们含有的内部方法如下: BeanPostProcessor=postProcessBeforeInitialization()+postProcessAfterInitialization() InstantiationAwareBeanPostProcessor=postProcessBeforeInstantiation()、postProcessAfterInstantiation()+继承BeanPostProcessor的上面两个接口 2、InstantiationAwareBeanPostProcessor接口作用于实例化前后,BeanPostProcessor作用于初始化前后:

 

 可知,postProcessorBeforeInstantiation在doCreateBean()=“实属初”之前

4、postProcessorAfterInstantiation在populateBean执行属性赋值之前调用

如(1)BeanNameAware、BeanFactoryAware、BeanClassLoaderAware (2)ApplicationContextAware(获取当前的ApplicationContext对象)。 xxxAware接口表示我们可以拿到spring中什么东西,如BeanNameAware代表我们可以拿到spring中的BeanName。 ApplicationContext接口与BeanFactory接口的区别是ApplicationContext继承了BeanFactory,同时扩展了其他功能方法。 调用上面(1)中的三个Aware接口-> 调用BeanPostProcessor的postProcessBeforeInitialization()接口-> InitializeBean()初始化-> 调用BeanPostProcessor的postProcessAfterInitialization()接口 上面"初始化InitializeBean()初始化"接口和"disposableBean()销毁"接口分别对应生命周期4个阶段中的初始化和销毁阶段

 

标签:初始化,生命周期,BeanPostProcessor,一聊,spring,接口,bean,赋值
来源: https://www.cnblogs.com/afei1759/p/14635540.html