Springあるある
스프링 인터셉터(FEAT. Spring Interceptor)
JIN_YOUNG _KIM
2025. 1. 17. 12:23
참고로 스프링(스프링 MVC)의 시작은 서블릿(정확히는 Dispatcher Servlet)이라는 점을 잊지 말자
// 스프링 인터셉트
public interface HandlerInterceptor {
// 아래 3개의 메서드를 제공
default boolean preHandle(HttpServletRequest request, HttpServletResponse
response, Object handler) throws Exception {}
default void postHandle(HttpServletRequest request, HttpServletResponse
response,Object handler, @Nullable ModelAndView modelAndView) throws Exception {}
default void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws
Exception {}
}
참고로, 위 인터페이스의 구현체는 [싱글톤]으로 스프링 컨테이너에 등록이 된다.
그리고 실무에서는 꼭 서블릿 필터를 사용해야만 하는 상황이 아니라면 대부분 스프링 인터셉터를 사용한다.
그 이유는 허용할 요청 URL에 대한 세밀한 설정이 가능하기 때문이다.
@Configuration
public class WebConfig implements WebMvcConfigurer {
/**
* 스프링 인터셉터 등록 : WebMvcConfigurer 상속 필요
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LogInterceptor())
.order(1)
// PathPatter 공식문서를 보고, 유연하게 요청 URL을 지정할 수가 있다.
.addPathPatterns("/**")
.excludePathPatterns("/css/**","/*.icon","/error");
registry.addInterceptor(new LoginCheckInterceptor())
.order(2)
.addPathPatterns("/**")
.excludePathPatterns("/","/members/add","/login","/logout","/css/**","/*.ico");
}
}