> Java > java지도 시간 > 스프링 부트의 순환 종속성

스프링 부트의 순환 종속성

Barbara Streisand
풀어 주다: 2024-10-22 20:26:03
원래의
752명이 탐색했습니다.

Dépendances cycliques en spring boot

자바에서는 두 개의 클래스 또는 두 개의 모듈이 서로 의존하여 순환을 형성할 때 순환 종속성이 발생합니다.

아래 예와 같이 서로 의존하는 두 개의 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.
로그인 후 복사

이 순환 종속성을 해결하기 위해 다음 네 가지 솔루션이 있습니다.

  • 코드를 리팩토링하여 책임을 분리하세요.
  • 중급 클래스나 인터페이스를 사용하세요.
  • 메서드(setter)를 통해 종속성 주입을 적용합니다.
  • 초기화를 지연하려면 @lazy와 같은 주석을 사용하세요.

우리의 경우 아래 예와 같이 @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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿