@RequiredArgsConstructor(onConstructor = @__(@Lazy))为什么可以解决循环依赖问题
时间: 2023-12-12 09:35:57 浏览: 177
带有@Transactional和@Async的循环依赖问题
5星 · 资源好评率100%
@RequiredArgsConstructor(onConstructor = @__(@Lazy))可以解决循环依赖问题,是因为它使用了懒加载的方式进行依赖注入。在循环依赖的情况下,如果使用默认的构造函数注入方式,会导致循环依赖的类无法被实例化,从而导致程序出错。而使用@Lazy注解可以将依赖的实例化推迟到第一次使用时进行,从而避免了循环依赖的问题。
下面是一个示例代码,演示了@RequiredArgsConstructor(onConstructor = @__(@Lazy))如何解决循环依赖问题:
```java
// A类依赖B类,B类依赖A类
public class A {
private B b;
public A(@Lazy B b) {
this.b = b;
}
}
public class B {
private A a;
public B(A a) {
this.a = a;
}
}
// 使用@RequiredArgsConstructor(onConstructor = @__(@Lazy))注解解决循环依赖问题
@RequiredArgsConstructor(onConstructor = @__(@Lazy))
public class A {
private final B b;
}
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class B {
private final A a;
}
```
阅读全文