Spring如何解决循环依赖?
创始人
2024-05-30 16:37:25

前提:不能解决 1、构造器注入 2、多例

解决:set注入、@Autowire注入

Spring通过三级缓存解决循环依赖:A - > B ,B -> A

singletonObjects 一级缓存(单例池)

earlySingletonObjects 二级缓存

singletonFactories 三级缓存

1、实例化 A 对象之后,将 A 放入三级缓存。

2、对A对象进行属性填充时,需要注入B 对象,之后实例化对象B,B对象也将自己放入三级缓存

3、B 对象属性填充时查询A对象步骤:

从三级缓存中查找——>从二级缓存中查找——>从一级缓存中查找

从三级缓存中查找A对象,找到以后注入A对象,然后将A对象从三级缓存中删除,

执行相关扩展操作将A对象放入二级缓存。

4、B对象实例化、属性填充以后,A对象再进行进行属性填充。

相关内容

热门资讯

“1998·11·14”命案告... 据“平安内蒙古”微信公众号9月4日消息,近日,通辽市科左中旗公安局成功抓获潜逃28年的命案犯罪嫌疑人...
德国萨克森州发现多个针对电力设... 转自:财联社【德国萨克森州发现多个针对电力设施的爆炸装置】财联社9月6日电,德国萨克森州警方9月5日...
严子怡夺得钻石联赛总决赛女子标... △钻石联赛总决赛严子怡标枪夺冠当地时间5日晚(北京时间6日凌晨),在比利时布鲁塞尔举行的2026年世...
青海省地方志事业发展成果展展出 本报讯 (记者 张晓英 咸文静) 9月3日,青海省地方志事业发展成果展在省图书馆正式展出。本次展览由...
青海启动“百企结对、劳务援青”... 本报讯 (记者 丁玉梅) 为深入落实党中央、国务院及省委、省政府关于促进高质量充分就业的决策部署,充...