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

相关内容

热门资讯

【应用】阿里推出夸克网盘独立A... 记得之前调研大家都在用哪家浏览器的时候,提名夸克的非常多,但不知道这些用夸克的小伙伴里有多少有使用夸...
王楚钦战胜张本智和,夺得乒乓球... 转自:央视新闻客户端在今天进行的第35届国际乒联-亚乒联盟亚洲杯男单决赛中,王楚钦战胜日本选手张本智...
调研速递|丽珠集团接受摩根基金... 2月6日,丽珠集团(000513.SZ)接受特定对象调研,摩根基金、工银理财等10家机构参与。公司就...
康芝药业:目前宏氏投资已给公司... 证券日报网讯 1月30日,康芝药业在互动平台回答投资者提问时表示,关于大股东回购中山爱护股权事宜,公...
小心,日本 来源:圆方你怎么看啊012026年2月8日,日本第51届国会众议院选举投票结束,日本广播协会(NHK...