• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

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

开发技术 开发技术 2周前 (04-08) 11次浏览
spring bean 生命周期=实属初销+2个常见接口+3个Aware型接口+2个生命周期接口

  • 实属初销:spring bean生命周期只有四个阶段,即实例化->属性赋值->初始化->销毁,实例化对应构造方法,属性赋值对应setter
前三个阶段分别在doCreate()中按顺序调对应的方法:
  1. createBeanInstance() -> 实例化
  2. populateBean() -> 属性赋值
  3. initializeBean() -> 初始化
源码

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

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

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

 

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

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

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

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

  • 2个生命周期接口
上面”初始化InitializeBean()初始化”接口和”disposableBean()销毁”接口分别对应生命周期4个阶段中的初始化和销毁阶段

 


程序员灯塔
转载请注明原文链接:睡前聊一聊"spring bean 生命周期"
喜欢 (0)