在Spring中存在三级缓存解决循环依赖问题
一级缓存 SingletonObjects 存放的是实例化以及初始化后的完整的Bean
二级缓存 earlySingletonObjects 存放的是半成品,只实例化还未初始化的Bean
三级缓存 singletonFactories 存放的是生成某个Bean的工厂,用来创建Bean后Bean的代理对象
二级缓存解决普通循环依赖问题
但是如果A是要创建一个A的代理对象,就是说A这个类被增强了
那么就需要借助三级缓存
三级缓存无法解决的,就是构造器注入,因为在Bean的生命周期中,构造器的调用是在初始化之前的,而三级缓存作用于初始话阶段。
如果是构造器注入属性,那么可以使用懒加载的方式解决 ,什么时候用,什么时候实例化。