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

相关内容

热门资讯

“我肯定给你管到底”,包头市长... 澎湃新闻记者 岳怀让随着包头市委副书记、市长孟庆维,市委常委、副市长田科瑞先后带队上线接听群众来电,...
投资情绪升温!海外资金加速布局... 据央视新闻报道,全球知名指数编制机构明晟最新季度调整5月29日正式生效。此次调整新纳入了多家中国科技...
“津旅时光号”推出六月海洋主题... 5月30日至6月28日期间,“津旅时光号”推出“与海的约会”六月海洋主题活动。活动期间,不满14周岁...
【开源北交所科技新产业】创想三... (来源:诸海滨新三板)作者丨分析师(证书编号):诸海滨(S0790522080007)创想三维上市,...
女子开保时捷一天内两次被钉子扎... 近日,黄女士向记者反映,其驾驶保时捷卡宴在广西境内高速出口附近接连遭遇轮胎被钉子扎。5月27日一天内...