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

kwj3591님의 프로필 이미지
kwj3591

작성한 질문수

스프링 핵심 원리 - 기본편

스코프와 프록시

Proxy My Logger 에 대한 간단한 질문

작성

·

231

1

안녕하세요~! 간단한 질문이 있습니다!

혹시 그러면 Proxy 를 사용하게 되면 Bean Container 에는 진짜 MyLogger.class 가 등록될 일은 없는 걸까요?

Proxy 를 사용하지 않으면 Request 가 들어오면 어쨌든 잠깐이라도 Bean Container 에 등록이 되었다가 폐기 되는 것으로 이해 했었습니다.

하지만 Proxy 를 사용하면 가짜 Porxy My Logger 가 싱글톤처럼 Bean 등록이 되고, 필요시 호출될 때마다 진짜 My Logger 를 사용하려는 클래스에 넘겨주게 되는 것이 맞을까요? (관리 객체는 클라이언트 객체: Controller, Service ).

답변 1

2

안녕하세요. kwj3591님, 공식 서포터즈 David입니다.

  1. 혹시 그러면 Proxy 를 사용하게 되면 Bean Container 에는 진짜 MyLogger.class 가 등록될 일은 없는 걸까요?


    => 싱글톤 스코프의 경우 MyLogger 도 빈으로 생성되어 컨테이너에서 관리합니다. 리퀘스트 스코프의 경우 애플리케이션 실행 즉시 빈으로 생성되지 않으며 요청이 들어올 때만 생성됩니다.

     

  2. Proxy 를 사용하지 않으면 Request 가 들어오면 어쨌든 잠깐이라도 Bean Container 에 등록이 되었다가 폐기 되는 것으로 이해 했었습니다.

     

    => 리퀘스트 스코프를 가지는 빈은 빈 팩토리에 의해 생성되지만 실제 보관되는 장소는 reqeust attributes 입니다. 싱글톤 스코프 빈의 경우 빈 컨테이너의 싱글톤 객체 저장공간에 저장됩니다.

     

  3. 하지만 Proxy 를 사용하면 가짜 Porxy My Logger 가 싱글톤처럼 Bean 등록이 되고, 필요시 호출될 때마다 진짜 My Logger 를 사용하려는 클래스에 넘겨주게 되는 것이 맞을까요? (관리 객체는 클라이언트 객체: Controller, Service ).

    => 네, 맞습니다.

감사합니다.

kwj3591님의 프로필 이미지
kwj3591

작성한 질문수

질문하기