文章目录
什么是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