Spring如何解决循环依赖?

Spring如何解决循环依赖?
public Class A {
@Autowired
private B b;
}
public Class B {
@Autowired
private A a;
}

A实例化后【放入缓存】,对属性注入populateBean()才对B实例化,而在此过程中又需要实例化A,如果没有缓存,可能又得重新实例化A,容易造成循环依赖…
所以在实例化前需要先在缓存中进行查找,避免二次创建。
这里所谓三级缓存介绍:
* singletonObjects:用于存放完全初始化好的 bean,从该缓存中取出的 bean 可以直接使用。
* earlySingletonObjects:提前曝光的单例对象的cache,存放原始的 bean 对象(尚未填充属性),用于解决循环依赖。
* singletonFactories:单例对象工厂的cache,存放 bean 工厂对象,用于解决循环依赖。

了解spring中Bean加载过程,才能知道为什么要引入缓存来解决循环依赖。 在这里插入图片描述

spring循环依赖不能解决的情况
a 构造器注入循环依赖
b prototype模式field属性注入循环依赖
能解决的情况
a singleton模式field属性注入(setter方法注入)循环依赖

大神博客:https://www.cnblogs.com/longy2012/articles/12834762.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值