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的工厂对象