AOP 프록시와 내부 호출 문제 - 지연 조회

박찬우·2024년 2월 17일
0

스프링

목록 보기
78/88

지연 조회

  • 스프링 빈을 지연해서 조회하면 되는데, ObjectProvider(Provider) , ApplicationContext 를 사용하면 된다.
  • ObjectProvider 는 객체를 스프링 컨테이너에서 조회하는 것을 스프링 빈 생성 시점이 아니라 실제 객체를 사용하는 시점으로 지연할 수 있다

예)

@Slf4j
@Component
@RequiredArgsConstructor
public class CallServiceV2 {

    //private final ApplicationContext applicationContext;
    private final ObjectProvider<CallServiceV2> callServiceProvider;

    public void external() {
        log.info("call external");
        //CallServiceV2 callServiceV2 = applicationContext.getBean(CallServiceV2.class);
        
        // 호출하는 시점에 스프링 컨테이너에서 빈을 조회
        CallServiceV2 callServiceV2 = callServiceProvider.getObject();
        callServiceV2.internal(); //외부 메서드 호출
    }

    public void internal() {
        log.info("call internal");
    }

}

profile
진짜 개발자가 되어보자

0개의 댓글