1 问题背景
SpringBoot项目启动报错。报错提示为某个类的A属性与B属性循环有依赖了。
2 前言
SpringBoot启动过程中是默认支持循环依赖(即A类中有B属性,B类中有A属性),笔者还不清楚为什么会发生循环依赖报错。
3 代码场景
发生报错的代码场景如下所示:
public class X {
@Autowrie
private A a;
@Autowrie
private B b;
}
public class A {
private B b;
}
public class B {
private A a;
}
3 解决方案
有2种解决方案
3.1 懒加载注入
方案一是使用
@Lazy
懒加载,代码如下:
public class X {
@Lazy
@Autowrie
private A a;
@Autowrie
private B b;
}
3.2 set方法注入
方案二是使用
set
方法,代码如下:
public class X {
private A a;
@Autowrite
public void setA(A a) {
this.a = a;
}
@Autowrie
private B b;
}