Spring 无法解决循环依赖的 5 种场景

一、构造器注入引发的循环依赖

1. 问题复现

@Component
public class ServiceA {
    private final ServiceB serviceB;
    
    @Autowired
    public ServiceA(ServiceB serviceB) { // 构造器注入
        this.serviceB = serviceB;
    }
}

@Component
public class ServiceB {
    private final ServiceA serviceA;
    
    @Autowired
    public ServiceB(ServiceA serviceA) { // 构造器注入
        this.serviceA = serviceA;
    }
}

 报错信息:Requested bean is currently in creation: Is there an unresolvable circular reference?

2. 原理分析

  • 三级缓存失效:构造器注入要求在实例化阶段完成依赖注入,而此时 Bean 尚未放入三级缓存。

  • 生命周期冲突

3. 解决方案

  • 方案 1:将其中一个 Bean 改为 Setter /

你可能感兴趣的:(spring,java,后端)