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对象再进行进行属性填充。

相关内容

热门资讯

云南人烤茶,直接用火,就问你野... 原标题:云南人烤茶,直接用火,就问你野不野!——有一种叫云南的生活之365天也许你喝过烤茶但你试过用...
多国代表:祝贺中国! 新华社韩国釜山7月25日电(记者张粲 孙一然)印着“热烈庆祝景德镇申报世界遗产成功”字样的红色横幅,...
网商汇免费发布信息攻略 在网商汇平台,企业可免费发布产品信息,帮助拓展全国市场,触达更广泛客户群体。想知道具体如何操作吗?接...
王嘉尔回应任全球击剑大使 【#王嘉尔回应任全球击剑大使#】#王嘉尔计划2年内开办击剑学校# 7月25日,国际击剑联合会官宣@王...
王毅在马尼拉未与日方会见或交谈 据CGTN最新消息,此次在菲律宾马尼拉期间,王毅外长没有同日方会见的安排,也没有与日方进行交谈。此前...