• 一图带你领略Spring Bean的生命周期全过程


    Spring Bean的生命周期全过程也是大厂的高频面试题之一。接下来通过一张图带大家搞清楚Spring Bean的生命周期全过程。

    Spring Bean的生命周期全过程分为5个阶段,创建前准备阶段、创建实例阶段、依赖注入阶段和容器缓存阶段以及销毁实例阶段。下图就是‍‍Spring的生命周期的完整的流程。

    每个阶段的细节如下:

    阶段1:创建前准备阶段

    这个阶段主要是在开始Bean加载之前,从Spring上下文中去获取相关的配置并且解析,然后找到Bean有关的配置内容,比如说"init-method"容器在初始化Bean的时候去调用

    ‍这个方法。‍

    "destory-method"容器在销毁Bean的时候去调用这个方法以及BeanFactoryPostProcessor这个类的Bean加载过程中的前置和后置的处理,这些类或者配置是Spring提供给开发者用来实现Bean加载过程中的一个扩展的机制。在很多和Spring集成的中间件中也经常‍‍使用到,比如Dubbo。

    阶段2:创建实例阶段

    这个阶段主要是通过反射来创建Bean的实际对象,并且扫描和解析Bean的声明的一些属性。‍

    阶段3:依赖注入阶段

    在这个阶段会检测被实例化的Bean是否存在其他依赖,如果存在其他依赖的话,‍‍就需要将这些依赖注入到Bean里面,比如说通过读取"@Autowired", "@Setter" 等注解去完成依赖注入的配置,‍‍这个阶段会触发一些扩展的调用,如常见的扩展类BeanPostProcessors它用来实现Bean初始化‍前后的一个回调。

    如InitializingBean的afterPropertiesSet()方法,它可以给属性赋值。还有BeanFactoryAware等等。‍

    ‍阶段4:容器缓存阶段

    容器缓存阶段主要是把Bean保存到IoC容器中缓存起来,‍‍到了这个阶段Bean就可以去被开发者使用了,这个阶段涉及到的操作有常见的“init-method”属性配置的方法会在这个阶段被调用,比如BeanPostProcessors它的后续处理方法postProcessAfterInitialization也会在这个阶段被触发。

    阶段5:销毁时的阶段

    这个阶段是完成Spring应用上下文的关闭的时候将会销毁Spring上下文中的‍‍所有的Bean,如果Bean实现了DisposableBean接口的话,或者是配置的“distory-method”的这些属性,都将会在这个阶段完成被调用。

  • 相关阅读:
    JAVA基础(十三)
    基于文化算法优化的神经网络预测研究(Matlab代码实现)
    Biwen.QuickApi代码生成器功能上线
    【Spring】数据导出为Excel的接口报java.io.IOException: UT010029: Stream is closed错误
    Python装饰器扫盲
    QT error: undefined reference to `__imp__ZN12QSqlDatabase7driversEv‘报错
    day37(事件轮询机制 ajaxGet执行步骤与案例(五个步骤) ajax属性 PHP返回JSON对象(两种))
    131. 分割回文串
    StateFlow 和 SharedFlow
    【SQL】mysql创建定时任务执行存储过程--20230928
  • 原文地址:https://blog.csdn.net/weixin_45985053/article/details/126304918