본문 바로가기

Java/Spring

"Requested bean is currently in creation: Is there an unresolvable circular reference?" Bean 순환 참조 오류

이 문서의 내용

    테스트 환경 및 주요 아젠다

    더보기

    이 프로젝트의 개발 환경

    • 개발 언어 및 환경
      • OpenJDK 12
      • Spring: spring-context: 5.0.2.RELEASE
      • AspectJ: apectjweaver: 1.8.13
      • Gradle 7.3

    스프링 AOP를 사용해 Proxy 객체를 만들고 있습니다. Bean 간의 종속성이 순환 참조되어 다음 오류가 발생하고 있습니다.

    Requested bean is currently in creation: Is there an unresolvable circular reference?

    Step 1: 순환 참조 해결

    오류의 원인은 명확합니다. Bean 간의 종속성이 순환 참조되지 않도록 코드를 수정합니다.

    테스트 환경에서는 Bean을 등록하기 위한 스프링 설정 클래스(@Configurable)가 Pointcut으로 지정되어 있습니다. 설정 클래스를 다른 패키지로 리팩토링하여 문제를 해결합니다.

    Step 2: 스프링 부트 프로퍼티 변경

    스프링 부트에서 프로퍼티 파일을 수정합니다. resources/application.properties에서 다음과 같이 프로퍼티를 추가합니다.

    spring.main.allow-circular-references=true

    또는 resources/application.yml에서 다음과 같이 프로퍼티를 추가합니다.

    spring:
        main:
            allow-circular-references: true
    더보기

    원칙적으로는 프로퍼티에서 순환 참조를 허용하는 대신 원인이 되는 코드를 직접 수정하는 것이 좋습니다.