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

Fly님의 프로필 이미지
Fly

작성한 질문수

스프링 핵심 원리 - 기본편

스코프와 Provider

getObject 로 Mylogger 를 가져오는 부분에서 이해가 잘 안되는 부분이 있어 질문드립니다.

작성

·

192

0

LogDemoService 와 LogDemoController 에서 

생성자 주입으로 myLoggerOjbectProvider 를 만들땐 다른 객체를 만들어 생성 주입 하는데

 

request scope 내에서 getOjbect에서 꺼내온 myLogger 가 어떻게 동일한 객체인지가 궁금합니다 ㅎㅎ

답변 1

3

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

.

Controller, Service 내 ObjectProvider<MyLogger> myLoggerProvider가 서로 다른데 

서로 다른 myLoggerProvider로부터 getObject()의 반환값인 MyLogger가 서로 같은가?

에 대해서 질문하신게 맞나요?

 

ObjectProvider의 역할은 제네릭으로 넘어온 타입의 빈을 빈 저장공간으로부터 찾아서 반환해주는 것입니다.

그러므로 ObjectProvider 자체는 서로 달라도 상관없습니다.

 

ObjectProvider는 요청을 식별하여 현재 요청과 관련있는 MyLogger 빈을 꺼내줍니다.

아래 그림처럼 A 전용 MyLogger 빈을 꺼내주는 것이죠.

그러므로 ObjectProvider의 서로 다름과 별개로 동일한 요청에 대해서는 어디서든(Controller, Service) 동일한 MyLogger 빈이 반환되게 됩니다.


.
감사합니다.

Fly님의 프로필 이미지
Fly

작성한 질문수

질문하기