반응형

스코프와 Provider

첫번째 해결방안은 앞서 배운 Provider를 사용하는 것이다.
간단히  ObjectProvider를 사용해보자.

 

 

main() 메서드로 스프링을 실행하고, 웹브라우저에 http://localhost:8080/log-demo 를 입력하자.

드디어 잘 작동하는 것을 확인할 수 있다.

 

  • ObjectProvider 덕분에 ObjectProvider.getObject()를 호출하는 시점까지 request scope 빈의 생성을 지연할 수 있다.(정확히는 컨테이너에 요청하는 것을 지연)
  • ObjectProvider.getObject()를 호출하는 시점에는 HTTP 요청이 진행중이므로 request scope 빈의 생성이 정상 처리된다.
  • ObjectProvider.getObject()LogDemoController, LogDemoService에서 각각 한번씩 따로 호출해도 같은 HTTP 요청이면 같은 스프링 빈이 반환된다! → 내가 직접 이걸 구분하려면 얼마나 힘들까? 휴!
반응형