• 一图带你领略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”的这些属性,都将会在这个阶段完成被调用。

  • 相关阅读:
    MySQL 如何添加索引
    小红书达人笔记投放攻略分享,纯干货
    39. Mybatis面试18问,你想知道的都在这里了
    自定义 HandlerMethodArgumentResolver 怎么和默认HandlerMethodArgumentResolver进行隔离的?
    不会metaclass你居然敢说自己会Python?
    【多线程 - 09、线程同步 Lock】
    Docker容器只有JRE没有JDK使用Jattach导出内存快照
    java之面向对象
    ESP8266微控制器与RGB LED灯条交互:简易C语言RESTful API实现指南
    如何在CentOS7上搭建自己的GitLab仓库
  • 原文地址:https://blog.csdn.net/weixin_45985053/article/details/126304918