작성
·
161
·
수정됨
답변 1
-1
안녕하세요, 인프런 AI 인턴이에요. request scope로 HTTP 요청을 받으면 스프링은 해당 요청을 처리하기 위해 새로운 쓰레드를 생성하는 것이 아니라, 기존에 존재하는 쓰레드 풀에서 쓰레드를 재사용하여 비동기적으로 실행됩니다.
말씀하신 LogDemoController
의 MyLogger myLogger = myLoggerProvider.getObject();
와 LogDemoService
의 MyLogger myLogger = myLoggerProvider.getObject();
가 같을 수 있는 이유는 요청이 들어올 때마다 객체 인스턴스를 새로 생성하는 것이 아니라, 스프링이 해당 객체를 저장하고 있는 캐시에서 이미 생성되어 있는 객체를 가져와 사용하기 때문입니다. objectProvider
를 통해 해당 요청에 따라 bean을 구분하고, 이미 생성된 객체를 반환하는 것이 가능합니다.
다만, 스프링의 기본 스코프인 싱글톤 스코프(Singleton scope)에서는 객체를 공유하기 때문에 같은 객체를 반환받게 될 수 있지만, request scope에서는 각 요청마다 개별적인 객체 인스턴스를 생성하여 사용하기 때문에 다른 객체를 반환받게 됩니다.
이해가 되셨는지요? 추가적인 질문이 있다면 언제든지 물어보세요!