Spring Bean 的循环依赖

技术杂烩   2023-08-17 16:53   606   0  

Spring 中的循环引用

  • 循环依赖:循环依赖其实就是循环引用,也就是两个或两个以上的 bean 互相持有对方,最终形成闭环。比如 依赖于 B , B 依赖于 A ;

  • 循环依赖在 spring 中是允许存在,spring 框架依据三级缓存已经解决了大部分的循环依赖 。

  1. 一级缓存:单例池,缓存已经经历了完整的生命周期,已经初始化完成的 bean 对象

  2. 二级缓存:缓存早期的 bean 对象(生命周期还没走完)

  3. 三级缓存:缓存的是 ObjectFactory,表示对象工厂,用来创建某个对象的

构造函数循环依赖的解决方法

由于 bean 的生命周期中构造函数是第一个执行的,spring 框架并不能解决构造函数的的依赖注入,可以使用 @Lazy 进行懒加载,什么时候需要对象再进行 bean 对象的创建。


博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。