构造器解决spring循环依赖
时间: 2023-11-09 14:07:20 浏览: 109
在Spring中解决循环依赖的一种常见方式是通过构造器注入。当两个或多个Bean之间存在循环依赖关系时,Spring可以通过在构造函数中声明对方依赖的方式来处理。
具体步骤如下:
1. 在需要解决循环依赖的类中,使用构造函数注入方式来声明依赖。例如,如果ClassA依赖于ClassB,那么在ClassA的构造函数中声明一个参数为ClassB类型的参数。
2. 在Spring配置文件或使用@Component注解标记的类中,将需要解决循环依赖的类声明为Bean。
3. Spring会自动检测到循环依赖,并使用构造函数注入来解决它。
下面是一个示例:
```java
public class ClassA {
private ClassB classB;
public ClassA(ClassB classB) {
this.classB = classB;
}
}
public class ClassB {
private ClassA classA;
public ClassB(ClassA classA) {
this.classA = classA;
}
}
// Spring配置文件
@Configuration
public class AppConfig {
@Bean
public ClassA classA(ClassB classB) {
return new ClassA(classB);
}
@Bean
public ClassB classB(ClassA classA) {
return new ClassB(classA);
}
}
```
在上面的示例中,ClassA和ClassB之间存在循环依赖关系。通过在构造函数中声明对方依赖的方式,Spring可以正确地解决循环依赖。
阅读全文