본문 바로가기

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 간의 종속성이 순환 참조되어 다음 오류가 발생하고 있습니다.

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

Step 1: 순환 참조 해결

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

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

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

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

application.properties
닫기
spring.main.allow-circular-references=true

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

application.yml
닫기
spring: ​​​​main: ​​​​​​​​allow-circular-references: true
더보기

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