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

相关内容

热门资讯

戴珍珠太老气?这样叠戴美爆了! 来源:中国新闻周刊下单前先“冲”购物金,立享折上折安铂洛利家的首饰设计都很独特!可以说每款都是孤品,...
胖东来:郑州店计划招聘100名... 8月14日,胖东来通过其官方社交平台发布《胖东来郑州店招聘退伍边防军人及刑释人员提前公告》,在8月1...
天华新能(300390)6万吨... 经济观察网 天华新能(300390)启动6万吨锂盐产线年度检修,叠加碳酸锂价格反弹,公司此前曾因股价...
从华为辞职返乡创业,她邀请你“... (来源:上观新闻)近日,一家主打自然植物疗愈、环保再生创作的文创体验空间“来岛造物”在绿华镇正式落地...
万亿巨头利好突袭,大涨超13%... (来源:21记者 21世纪经济报道)记者丨吴斌编辑丨和佳,曾静娇,李莹...