강의

멘토링

커뮤니티

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

조윤호님의 프로필 이미지
조윤호

작성한 질문수

스프링 핵심 원리 - 고급편

구체 클래스 기반 프록시 - 적용

V2에 대해서 질문있습니다.

해결된 질문

작성

·

347

3

 

구현 클래스(OrderRepositoryV2)를 따로 bean으로 등록하지 않고 프록시를 빈동록할 때 new 연산자로 생성해주는 이유가 따로 있을까요?

@Bean
public OrderRepositoryV2 orderRepositoryV2(LogTrace logTrace) {
    //이 부분
    OrderRepositoryV2 repository = new OrderRepositoryV2();
    
    return new OrderRepositoryConcreteProxy(repository, logTrace);
}

proxy를 bean으로 등록할 때 그 안에서 OrderRepositoryV2 객체를 생성하니

똑같이 싱글톤처럼 사용되긴 할텐데 따로 bean 등록한 후 의존 주입을 하지 않는 이유가 궁금합니다.

 

 

답변 1

2

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 조윤호님

OrderRepositoryV2를 빈으로 주입하게 되면, 프록시가 아닌 실제 빈이 주입될 가능성이 있습니다. 이런 문제를 원천 차단하는 것이지요.

그래서 항상 프록시를 통해서 원본 객체에 접근하도록 의도한 것입니다^^

감사합니다.

조윤호님의 프로필 이미지
조윤호
질문자

아하

생각해보니 proxy 객체와 핵심 기능을 가진 객체가 같은 타입이라 그런 문제가 발생할 수 있겠네요

 

감사합니다.

조윤호님의 프로필 이미지
조윤호

작성한 질문수

질문하기