Spring的Bean生命周期探究

2020-05-04  本文已影响0人  苏wisdom

1 先问问题

Spring Bean的生命周期是什么样的?

2 按照大块分

实例化 -> 装配属性和依赖 -> 调用各种初始化方法 -> 用完销毁

3 细节

  1. 实例化Bean ,doCreateBean方法中的createBeanInstance,处理了构造器注入
  2. 装配Bean的属性,doCreateBean方法中的populateBean,处理了setter注入,Field注入和自定义方法注入
  3. 然后下面是初始化Bean的步骤,doCreateBean方法中的initializeBean
    3.1 如果Bean本身实现了Aware接口,帮助Bean装配BeanName,ClassLoader或者BeanFactory
    3.2 调用BeanPostProcessorsBeforeInitialization
    3.3 如果实现了InitializingBean接口,会调用,如果定义了"init-method",调用
    3.4 调用BeanPostProcessorsAfterInitialization
  4. 最后就是两步销毁,DisposableBean的destroy()和Bean自身定义的destroy()

来看看相关的源码,其实初始化部分都发生在AbstractAutowireCapableBeanFactory的doCreateBean方法里。

image.png image.png

4 依赖注入发生的时机

Bean的生命周期中,依赖注入到底发生在啥时候呢?其实上篇文章已经提到过了,这里汇总一下:

上一篇 下一篇

猜你喜欢

热点阅读