본문 바로가기

강의 내용 정리/스프링 핵심 원리 기본

9-7. 스코프와 Provider

https://catsbi.oopy.io/b2de2693-fd8c-46e3-908a-188b3dd961f3

이처럼 ObjectProvider를 붙이면 myLoggerProvider가 MyLogger를 주입받는게 아니라 MyLogger를 DL할 수 있는 애가 주입됨.

스프링 구동시 MyLogger 스프링 빈을 등록을 요구하는데 해당 빈은 자신이 생성되야 할 스코프 범위에 해당되지 않았기 때문에 에러가 발생한다.

LogDemoController

MyLogger myLogger = myLoggerProvider.getObject(); 에서 최초로 만들어진다. ( DL 받는다. )

myLogger.log로 로그 찍을 때는 이미 uuid, requestURL 들어와있으므로 이쁘게 찍힌다.

logDemoService.logic 에서도 마찬가지. ( 이미 들어와있음. )

 

LogDemoService

둘다 ObjectProvider를 붙여준다.

늦게 뜨게 해야하는 것 (MyLogger)를 ObjectProvider 로 감싸주자.

 

 

uuid로 같은 요청에서 보낸건지 알수 있음.

 

순서 :

1. 스프링 올라간다( 이 때 컴포넌트스캔하면서 빈들이 올라감 ( 필요한건 DI ) )

2. 요청에 따른 컨트롤러

3. 컨트롤러에 따른 서비스

4. 서비스 -> 레파지토리

5. 거슬러 올라와 응답.

6. 스프링 내리기 ( 싱글톤 빈의 경우 종료 직전에 destroy 된다. )

 

 

 

sleep 걸어놔도 나중에 찍더라도 uuid가 유지가 됨 . ( 요청이 섞여도 구분이 됨. )

 

자는 사이 다른애들 일 처리.

 

 

 

 

 

 

스프링 컨테이너에게 요청하는 것 자체를 지연시킴. -> 빈이 나중에 생성됨.

 

이번 장의 결론.
이번 장의 결론.
이번 장의 결론.
이번 장의 결론.
이번 장의 결론.

이 그림 다시 보면,,,,

클라이언트 A, B가 동시에 요청을 해도 빈을 A 전용, B 전용으로 생성하고 서비스에서 요청해도 A,B는 각각 항상 같은 빈을 줘야함. -> 이게 애초에 목적이었음.

 

( 와 어렵다 ) -> 다시보니 개쉽다.220815

Recent Posts
Popular Posts
Recent Comments