반응형
인터셉터의 중복 호출을 제거한다.
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String requestURI = request.getRequestURI();
String uuid = UUID.randomUUID().toString();
request.setAttribute(LOG_ID, uuid);
log.info("REQUEST [{}][{}][{}][{}]", uuid, request.getDispatcherType(), requestURI, handler);
return true;
}
필터는 DispatcherType인 경우 필터를 적용할 지 선택할 수 있었지만 인터셉터는 스프링이 제공하는 기술이라 무관하게 호출된다.
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LogInterceptor())
.order(1)
.addPathPatterns("/**")
.excludePathPatterns(
"/css/**", "/*.ico", "/error", "/error-page/**"
);
}
/error-page/**을 제거하면 내부 호출도 인터셉터가 호출되게 된다.
강의에서 흐름을 잘 설명해 주었는데 아래와 같다.
- WAS(/error-ex, dispatchType=REQUEST) -> 필터 -> 서블릿 -> 인터셉터 -> 컨트롤러
- WAS(여기까지 전파) <- 필터 <- 서블릿 <- 인터셉터 <- 컨트롤러(예외발생)
- WAS 오류 페이지 확인
- WAS(/error-page/500, dispatchType=ERROR) -> 필터(x) -> 서블릿 -> 인터셉터(x) -> 컨트롤러(/error-page/500) -> View
스프링 MVC 2편 - 백엔드 웹 개발 활용 기술을 참고하여 공부하였습니다.
반응형
'Framework & Library > Spring Boot' 카테고리의 다른 글
[Spring Boot] : BasicErrorController가 model에 담는 정보 (0) | 2022.03.01 |
---|---|
[Spring Boot] : BasicErrorController 오류 페이지 (0) | 2022.02.28 |
[Spring Boot] : 서블릿 예외 처리 필터 (0) | 2022.02.25 |
[Spring Boot] : 서블릿 예외 처리 오류 페이지 작동 원리 (0) | 2022.02.25 |
[Spring Boot] : 서블릿 예외 처리 오류 화면 제공 기능 구현하기 (0) | 2022.02.25 |
댓글