spring循环依赖包括
A依赖B,B依赖A
A依赖B,B依赖C,C依赖A
A依赖A
spring使用三级缓存解决这个问题;核心三级缓存
一级缓存:单例池,完整bean生命周期创建的bean对象
二级缓存:保存单例,但是还没有经历完成的bean生命周期,最后转移到一级缓存
三级缓存:map打破循环,===》从工厂拿需要的bean
对象初始化步骤:
首先使用构造器创建这个bean
进行依赖注入
init初始化
Spring解决问题:
一级缓存:存储完完全全的bean,可以直接使用的
二级缓存:存放未完成的bean,先放在这里
三级缓存:存放bean的工厂对象
Spring通过三级缓存机制解决循环依赖问题。一级缓存是单例池,存储完全初始化的bean;二级缓存保存未完成生命周期的单例bean;三级缓存用于打破循环,存储bean的工厂对象。在bean初始化过程中,包括构造器创建、依赖注入和初始化方法调用。
729

被折叠的 条评论
为什么被折叠?



