【框架篇06】Spring框架-spring中的循环引用

36 阅读1分钟

循环引用

image.png

三级缓存解决循环依赖

DafultSingletonBeanRegistry类定义了三级缓存

  • Map<String,Object> singletonObjects = new ConcurrentHashMap(256); 一级缓存
  • Map<String,ObjectFactory<?>> singletonFactories = new HashMap(16) 三级缓存
  • Map<String,Object> earlySingletonObjects = new ConcurrentHashMap(16); 二级缓存 image.png

一般对象的循环依赖 image.png

代理对象的循环依赖 image.png

构造方法出现循环依赖怎么解决? A依赖B,B依赖A,注入方式是构造函数 原因:由于bean的生命周期中构造函数是第一个执行的,spring框架并不能解决构造函数的依赖注入 解决方案:使用@Lazy进行懒加载,什么时候需要对象再进行bean对象的创建