자바에서는 두 개의 클래스 또는 두 개의 모듈이 서로 의존하여 순환을 형성할 때 순환 종속성이 발생합니다.
아래 예와 같이 서로 의존하는 두 개의 Bean A와 B가 있다고 가정합니다.
@Component public class A{ private final B b; public A(B b){ this.b = b; } }
@Component public class B{ private final A a; public B(A a){ this.a = a; } }
프로젝트를 실행할 때 다음 오류가 발생합니다.
Relying upon circular references is discouraged and they are prohibited by default. Update your application to remove the dependency cycle between beans. As a last resort, it may be possible to break the cycle automatically by setting spring.main.allow-circular-references to true.
이 순환 종속성을 해결하기 위해 다음 네 가지 솔루션이 있습니다.
우리의 경우 아래 예와 같이 @lazy 주석을 사용하는 네 번째 솔루션을 사용합니다.
@Component public class A{ private final B b; public A(@Lazy B b){ this.b = b; } }
@Component public class B{ private final A a; public B(A a){ this.a = a; } }
이제 우리는 이 순환에서 벗어났습니다. :)
위 내용은 스프링 부트의 순환 종속성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!