请举例说明使用构造函数注入避免Spring boot 循环依赖
时间: 2024-05-13 11:13:50 浏览: 186
Spring5参考指南:依赖注入
假设有以下两个类:
```java
public class A {
private B b;
public A() {
// ...
}
public void setB(B b) {
this.b = b;
}
}
public class B {
private A a;
public B() {
// ...
}
public void setA(A a) {
this.a = a;
}
}
```
通过构造函数注入可以避免循环依赖,改造后的代码如下:
```java
public class A {
private B b;
public A(B b) {
this.b = b;
}
}
public class B {
private A a;
public B(A a) {
this.a = a;
}
}
```
这样,在创建 A 实例时,只需要将 B 实例传递给 A 的构造函数即可,不需要再通过 setter 方法将 B 实例注入到 A 中。同理,在创建 B 实例时,只需要将 A 实例传递给 B 的构造函数即可,不需要再通过 setter 方法将 A 实例注入到 B 中。这样可以避免循环依赖。
阅读全文