zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    python 解释器交互模块 -- sys
    python 操作系统模块 -- OS
    python 随机数模块 -- random
    python 时间模块 -- time
    Python 面向对象
    python 模块
    python -- 面向对象进阶
    github连接提示
    linux day4
    git基本使用
  • 原文地址:https://www.cnblogs.com/CooperXia-847550730/p/13400117.html
Copyright © 2011-2022 走看看