MyLogger
로그를 출력
@Scope(value = "request") 를 사용해서 request 스코프로 지정했다. 이제 이 빈은 HTTP 요청 당 하나씩 생성되고, HTTP 요청이 끝나는 시점에 소멸된다.
=>request 스코프는 의존관계주입시점이 아니라 HTTP 요청이 들어와야 생성된다!
이 빈이 생성되는 시점에 자동으로 @PostConstruct 초기화 메서드를 사용해서 uuid를 생성해서 저장해둔다.
이 빈이 소멸되는 시점에 @PreDestroy 를 사용해서 종료 메시지를 남긴다.
requestURL 은 이 빈이 생성되는 시점에는 알 수 없으므로, 외부에서 setter로 입력 받는다.
LogDemoController
로거가 잘 작동하는지 확인하는 테스트용 컨트롤러
HttpServletRequest를 통해서 요청 URL 받는다!
requestURL 값 : http://localhost:8080/log-demo
이렇게 받은 requestURL 값을 myLogger에 저장해둔다. myLogger는 HTTP 요청 당 각각 구분되므로 다른 HTTP 요청 때문에 값이 섞이는 걱정은 하지 않아도 된다.
컨트롤러에서 controller test라는 로그를 남긴다.
참고 : requestURL을 MyLogger에 저장하는 부분 => 공통 처리 가능!
스프링 인터셉 터나 서블릿 필터 같은 곳을 활용하는 것이 좋다!