인프런 커뮤니티 질문&답변
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 객체와 핵심 기능을 가진 객체가 같은 타입이라 그런 문제가 발생할 수 있겠네요
감사합니다.