• spirng如何解决循环依赖的问题


    引用:https://blog.csdn.net/wujun2412/article/details/123392678

    spring内部有三级缓存:
    
    singletonObjects 一级缓存,用于保存实例化、注入、初始化完成的bean实例
    earlySingletonObjects 二级缓存,用于保存实例化完成的bean实例
    singletonFactories 三级缓存,用于保存bean创建工厂,以便于后面扩展有机会创建代理对象。

    引用:https://www.zhihu.com/question/438247718/answer/1730527725
    A对象依赖了B对象,B对象依赖了A对象。
    
    在Spring中,一个对象并不是简单new出来了,而是会经过一系列的Bean的生命周期(核心是属性方法的依赖注入),导致在创建Bean的过程中,出现了互相等待的情况。
    
    ABean创建–>依赖了B属性–>触发BBean创建—>B依赖了A属性—>需要ABean(但ABean还在创建过程中):这时候就会导致A和B都创建不出来。
    
    最简单的解决循环依赖的方式:@Lazy注解,直接生成空的代理对象赋值!
    
    俩个互相依赖的Bean都是原形的,循环依赖无法解决!因为原形的不能用之前创建的对象(每次都是一个新对象)!
    
    构造方法的方式去循环依赖,因为无法将构造方法实例化,所以循环依赖无法解决!
    
    引用:https://baijiahao.baidu.com/s?id=1725477878360246135&wfr=spider&for=pc
    

      

  • 相关阅读:
    解决input获取焦点时底部菜单被顶上来问题
    JavaScript学习笔记
    JavaScript表单验证
    js 中{},[]中括号,大括号使用详解
    陀飞轮
    娱乐天空
    左右手
    软测 学习
    git 学习
    spring boot 学习
  • 原文地址:https://www.cnblogs.com/xiaohu666/p/16226000.html
Copyright © 2020-2023  润新知