循环引用
三级缓存解决循环依赖
DafultSingletonBeanRegistry类定义了三级缓存
- Map<String,Object> singletonObjects = new ConcurrentHashMap(256); 一级缓存
- Map<String,ObjectFactory<?>> singletonFactories = new HashMap(16) 三级缓存
- Map<String,Object> earlySingletonObjects = new ConcurrentHashMap(16); 二级缓存
一般对象的循环依赖
代理对象的循环依赖
构造方法出现循环依赖怎么解决? A依赖B,B依赖A,注入方式是构造函数 原因:由于bean的生命周期中构造函数是第一个执行的,spring框架并不能解决构造函数的依赖注入 解决方案:使用@Lazy进行懒加载,什么时候需要对象再进行bean对象的创建