인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

mine702님의 프로필 이미지
mine702

작성한 질문수

스프링 핵심 원리 - 고급편

프록시와 내부 호출 - 대안2 지연 조회

오타? 및 내용 질문

작성

·

18

0

안녕하세요 선생님 강의 듣다가 질문이 생겨서 글 작성해봅니다 제가 알기로 스프링 2.6 ? 이상에서 순환 참조가 자동으로 비활성 되어서 private final ObjectProvider<CallServiceV2> callServiceProvider; 을 사용해도 lazy 조회가 되지 않는것으로 알고 있습니다 그래서 application.yml 파일에서 이 설정을 true 로 바꿔주거나 test 시

@TestPropertySource(properties = "spring.main.allow-circular-references=true")

이 어노테이션을 추가하려 순환 참조를 활성화 시킨 후에 테스트 해봐야지만 정상 작동 되는걸로 알고 있는데 제가 알고 있는 내용이 다른지 궁금합니다

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. mine702님.

spring 2.6 버전부터 순환 참조가 기본적으로 허용되지 않게 변경되었으므로 여러분이 언급한 것처럼 spring.main.allow-circular-references=true 설정을 통해 활성화해야 이전 방식처럼 사용할 수 있습니다.

순환 참조란 두 개 이상의 빈이 서로를 필요로 하는 상황을 말합니다. Spring 2.6부터는 이와 같은 순환 참조 설정을 허용하지 않도록 기본 정책이 변경되었으며, 이것은 애플리케이션에서 의존성 관리를 명확히 하기 위함입니다.

ObjectProvider를 사용하더라도 자동으로 lazy loading을 지원하는 것이 아니므로, 필요에 따라 명시적으로 Lazy를 설정해주거나 위의 속성을 활성화해야 합니다. 따라서 @TestPropertySource(properties = "spring.main.allow-circular-references=true")와 같은 설정을 통해 테스트 환경에서 순환 참조를 일시적으로 허용하면 정상적으로 작동할 것입니다.

더 많은 정보를 확인하시려면 아래 유사한 질문과 답변을 참고해 보세요:
- setter에 @Autowired 쓰는 문법은 이제 막힌건가요?
- 내부호출 : 자기자신 주입

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

mine702님의 프로필 이미지
mine702

작성한 질문수

질문하기