인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

ys님의 프로필 이미지
ys

작성한 질문수

스프링 핵심 원리 - 기본편

스코프와 Provider

웹 스코프에서 Provider 사용

해결된 질문

작성

·

354

1

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
제가 Provider에 대해 이해한게 맞는지 궁굼해서 질문 드립니다. 강의는 9강 스코프와 Provider입니다!

  1. 먼저 Error creating bean with name 'myLogger': Scope 'request' is not active for the current thread; consider defining a scoped proxy for this bean if you intend to refer to it from a singleton;
    이 오류가 일어나는 이유가 스프링 컨테이너에서 request 스코프 빈에 대한 의존관계를 주입하려고 하는데, 아직 클라이언트가 요청을 하지 않아서 리퀘스트 스코프 빈이 생성되지 않아서 오류가난다라고 이해했습니다

  2. 1번이 맞다면..Provider을 사용하는 이유가, Request 스코프 빈이 의존관계 주입 시점에 호출이 안되서 오류가 났었는데, 클라이언트가 요청한 시점에 getObject나 get 메서드를 이용해서 request 스코프 빈을 생성하고 반환하는 DL기능을 써서, 의존관계가 잘 주입되게 해준다라고 이해했습니다

질문은 총 두 개 입니다.

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

ys님의 질문에 대해 이해하신 내용이 맞는지 확인하시는 과정에 도움을 드리고자 합니다. Provider와 관련된 내용과 스코프에 대해 자세히 알아볼 수 있는 유사한 질문과 답변이 있어 링크를 공유드립니다.

위 링크들을 참고하시면 ys님께서 이해하신 내용을 더 확실히 다지고, 궁금증을 해소하는데 도움이 될 것입니다.

감사합니다.

ys님의 프로필 이미지
ys
질문자

그러면 LogDemoController과 LogDemoService는 싱클톤 스코프이니까 스프링 컨테이너에 빈생성과 의존관계가 주입되어있고, 클라이언트가 요청하기 전에는 request 스코프 빈이 생성되지 않아 의존관계를 주입할 수 없으니, Provider을 이용해서 request 스코프 빈이 실제 사용되는(getObject()호출될 때) 순간까지 request 스코프 빈의 생성을 미룬다. Provider에 요청할 때 스프링 컨테이너에서 빈을 조회하는데, 있으면 반환하고 없으면 생성해서 의존관계를 주입한다.(이 시점에는 요청이 되었기 때문에 반환해서 의존관계를 주입) 이렇게 이해해도 좋을까요??

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

네, 이해하신 게 맞습니다.

감사합니다.

ys님의 프로필 이미지
ys

작성한 질문수

질문하기