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月8日消息,国家知识产权局信息显示,广州视源电子科技股份有限公司、广州视睿电子科技有限公司申请一项...
斯达半导申请功率模块控制相关专... 5月8日消息,国家知识产权局信息显示,斯达半导体股份有限公司申请一项名为“一种自适应结温控制的功率模...
寒武纪取得语句编译方法相关专利... 5月8日消息,国家知识产权局信息显示,中科寒武纪科技股份有限公司申请一项名为“规范化语句中的表达式的...
支付促消费直接拉动超6亿元 信... 支付促消费直接拉动超6亿元 信用修复实现“免申即享”我省银行业两项金融惠民措施落地见效  今年以来,...
日久光电取得防指纹膜相关专利,... 5月8日消息,国家知识产权局信息显示,江苏日久光电股份有限公司申请一项名为“防指纹膜”的专利,授权公...