面试题-Spring循环依赖问题

什么是Spring的循环依赖

Spring 框架中的循环依赖指的是在 Spring 容器中,两个或多个 bean 之间存在相互依赖的情况。这种依赖关系会导致循环引用,使得 Spring 需要在创建这些 bean 时采取特殊的处理措施。

例如,假设有两个 bean A 和 B,其中 A 依赖于 B,而 B 又依赖于 A。如果不加以处理,这种情况会导致创建 bean 的过程中出现问题,因为每个 bean 的创建都依赖于另一个尚未完全创建的 bean。

public class B {
   
    private A a;
}
public class A {
   
    private B b;
}

Spring是如何解决的(三级缓存)

构造器注入的循环依赖

对于构造器注入,Spring 无法自动解决循环依赖,因为在构造函数调用时,依赖的 bean 尚未完全初始化。因此,构造器注入的循环依赖一般会导致 BeanCurrentlyInCreationException 异常。为了解决这个问题,可以选择使用 setter 注入或构造函数注入来避免这种情况。

Setter 注入或属性注入的循环依赖:

使用注解方式(例如 @Autowired)时,Spring 默认使用的是 setter 注入方式(在字段上也可以使用 @Autowired,它实际上是 sett

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值