-
스코프와 Providerspring/스프링 핵심 원리 강의 내용 정리 2023. 12. 12. 20:44
첫번째 해결방안은 앞서 배운 Provider를 사용하는 것이다
간단히 ObjectProvider를 사용해보자이렇게 Provider를 사용하여 빈을 찾아올 수 있는 객체를 만들고, .getObject를 사용하여 myLogger를 입력했다
하지만 여전히 동일한 오류가 나는 모습이다
LogDemoService 에서도 동일하게 Provider 를 사용하고 다시 실행하니 성공하는 모습이다
웹 애플리케이션에도 내가 반환한 문구가 출력되고 있다
다시 로그를 살펴보자
밑에 로그가 추가됐다
객체가 생성되고, 소멸하는 것 까지도 확인했다
중요한건 [ ] 안에 있는 uuid 이다
새로고침을 반복적으로 해보자 (클라이언트 요청)
이 처럼 요청별로 고유한 uuid를 받아 객체마다 따로 관리를 해주는 모습이다
스레드를 걸어서 한번 요청이 뒤엉키도록 만들어보자
이렇게 요청 사이에 다른 요청이 끼어들어도 객체가 유지되는 것을 알 수 있다
- ObjectProvider 덕분에 ObjectProvider.getObject() 를 호출하는 시점까지 request scope 빈의
생성을 지연할 수 있다
- ObjectProvider.getObject() 를 호출하시는 시점에는 HTTP 요청이 진행중이므로 request scope 빈
의 생성이 정상 처리된다
- ObjectProvider.getObject() 를 LogDemoController , LogDemoService 에서 각각 한번씩 따로
호출해도 같은 HTTP 요청이면 같은 스프링 빈이 반환된다. 내가 직접 이걸 구분하려면 얼마나 힘들까 ㅠㅠ…
이 정도에서 끝내도 될 것 같지만... 개발자들의 코드 몇자를 더 줄이려는 욕심은 끝이 없다
(Provider 도 귀찮았나보다)
다음 시간에 알아보자'spring > 스프링 핵심 원리 강의 내용 정리' 카테고리의 다른 글
총 정리 (0) 2023.12.12 스코프와 프록시 (0) 2023.12.12 request 스코프 예제 만들기 (0) 2023.12.12 웹 스코프 (0) 2023.12.12 프로토타입 스코프 - 싱글톤 빈과 함께 사용시 Provider로 문제 해결 (0) 2023.12.12