inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 핵심 원리 - 고급편

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

오타? 및 내용 질문

해결된 질문

118

mine702

작성한 질문수 4

0

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

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

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

spring 디자인-패턴

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 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 쓰는 문법은 이제 막힌건가요?
- 내부호출 : 자기자신 주입

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

어드바이스 순서 디폴트 기준이 궁금합니다.

0

52

1

AspectV1 예제를 @Configuration 수동 등록으로도 가능한가요?

0

78

2

구체 클래스를 상속받아 확장한 형태도 클래스패턴/데코레이터 패턴이라고 칭하나요?

0

52

1

TraceTemplate 을 미리 빈으로 등록해서 사용할때 이렇게 설정하는게 맞는건가요?

0

53

1

Decorator 에서 추상메서드로 뺄때 질문 있습니다.

0

56

1

대상 클래스에 기본 생성자가 없을 때

0

74

1

스프링 부트 버전 4.0 aop 의존성 명칭 변경

1

350

2

final 키워드 사용 관련 질문

0

76

1

안녕하세요

0

64

1

ThradLocal 실무 사례

0

97

2

실무에서의 동시성 문제

0

62

1

로그 등 부가 기능에 대한 테스트코드

0

50

1

ProceedingJoinPoint와 MethodInvocation에 대하여

0

67

1

실무 멀티스레딩에 대한 궁금증

0

69

1

안녕하세요 질문있습니다

0

43

1

AspectV3 aop 실행 순서 문의 드립니다

0

38

1

MDC vs AOP 중에 고민중입니다.

0

74

1

순환참조

0

158

2

this를 단독으로 사용할때랑 파라미터 바인딩 할때 차이

0

77

1

빈 후처리에 등록 질문 있습니다.

0

75

1

AppConfig 설정하는 설명중에 이해가 안되는게 있습니다.

0

88

1

ThreadLocal을 지역변수로 선언하면 remove가 필요할까요?

0

117

2

@Aspect 어노테이션으로 생성된 Advisor의 Bean 저장 여부

0

67

1

ThreadLocal 사용시 부작용이 있을수 있을까요? (ThreadLocal.remove()를 잘한다고 해도..)

0

73

2