Spring Interceptor
컨트롤러에 들어오는 HttpRequest와 HttpResponse를 가로채 컨트롤러 전 후로 적절한 처리를 해줌.
서블릿의 영역으로 DispatcherServlet 이전에 체인을 따라 공통로직을 실행함.
주로 보안, 로깅, 문자열 인코딩 등에 사용한다.
DispatcherServlet 이후 컨트롤러 호출 전 공통로직으로 인증과인가, 정보가공 등에 사용한다.
DispatcherServlet과 Controller 사이에서 처리해준다고 했는데 실제적으로는 처리를 위한 인터페이스를 구현해야한다.
controller가기전, 후, 뷰 완료 후 시점별로 처리할 수 있도록 되어있다.
인터페이스는 아래와 같다.
public interface HandlerInterceptor {
// 컨트롤러 가기전 가로채서 동작 수행
default boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
//Object handler : 요청된 컨트롤러 메소드
// ex : {경로}TestRestController#findAll(ReplaceKwListParam)
return true;
}
//컨트롤러 동작 이후 수행
default void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
@Nullable ModelAndView modelAndView) throws Exception {
//ModelAndView 객체를 받아 확인 가능하다.
}
//화면 처리 완료 이후 호출
default void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,
@Nullable Exception ex) throws Exception {
}