• Spring中bean的生命周期和循环依赖


    生命周期

     

    实例化spring容器

     

    有一个BeanFactory会做接下来的事情

     

    扫描加了注解或者配置的类

    解析类

    实例化beandefinition 放入map

     

    第一次调用后置方法

    遍历map,验证beandefinition

     

    反射并推断构造方法,使用构造方法区new一个实例

     

    缓存、注解、合并db对象

    提前暴露到二级缓存

     

    属性注入----涉及循环依赖(其实是在create之前)

     

    调用很多后置方法

    完成aop

     

    放入单例池

     

    销毁

     

    循环依赖

    AB相互循环依赖

     

     

    spring容器先去生成a的bean对象,检测到有循环依赖之后,就会在create a之前将a加入二级缓存,然后注入的时候检测需要b,就重新走一遍b的流程,b在注入的时候会去二级缓存的sigtonfacctory(单例工厂)对象中拿到a,将a放入三级缓存,然后完成注入。然后再走a的属性注入流程,拿到b注入到a里。

    注意:

    1、单例工厂会调用很多后置处理器处理这个类的返回。

    2、为什么有三级缓存,为了提高效率,不需要每一次都是用单例工厂产生/加工一遍a

    3、aop通常在属性注入之后,那么循环依赖的时候注入b的a怎么aop呢?

    在单例工厂中相当于会提前调用aop的后置处理器,完成aop

  • 相关阅读:
    Java动态代理
    图解Python 【第七篇】:网络编程Socket
    我的FP感悟
    Scala微服务架构 三
    Scala微服务架构 二
    Scala微服务架构 一
    一篇入门 -- Scala
    基于DobboX的SOA服务集群搭建
    hadoop 异常及处理总结-01(小马哥-原创)
    使用Eclipse的几个必须掌握的快捷方式(能力工场小马哥收集)
  • 原文地址:https://www.cnblogs.com/CooperXia-847550730/p/13400117.html
Copyright © 2020-2023  润新知