美文网首页
Spring的Bean生命周期探究

Spring的Bean生命周期探究

作者: 苏wisdom | 来源:发表于2020-05-04 14:52 被阅读0次

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

    • 构造器注入,发生在实例化的时候
    • setter注入,发生在populateBean
    • Field注入,发生在populateBean
    • 自定义方法注入,发生在populateBean

    相关文章

      网友评论

          本文标题:Spring的Bean生命周期探究

          本文链接:https://www.haomeiwen.com/subject/dytyghtx.html