[스프링] 인터셉터의 사용 방법
스프링 프레임워크에서 인터셉터(Interceptor)는 컨트롤러에 요청이 도달하기 전 또는 후에 특정한 작업을 수행할 수 있는 기능을 제공합니다. 이를 통해 요청을 가로채어 전처리나 후처리 작업을 할 수 있고, 로깅, 보안, 인증, 트랜잭션 관리 등 다양한 용도로 활용할 수 있습니다.
인터셉터 사용 방법
-
HandlerInterceptor 인터페이스를 구현
public class CustomInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 컨트롤러 실행 전 수행할 작업 return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { // 컨트롤러 실행 후 수행할 작업 } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { // 뷰 렌더링 후 수행할 작업 } }
-
설정 클래스에서 인터셉터 등록
@Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new CustomInterceptor()) .addPathPatterns("/**") .excludePathPatterns("/login"); // 예외 경로 설정 } }
인터셉터 사용 시 유의할 점
- 순서 지정:
addInterceptor
로 등록한 순서대로 인터셉터가 동작하므로, 필요에 따라 순서를 조절할 수 있어야 합니다. - 예외 처리:
preHandle
시점에 예외가 발생하면postHandle
과afterCompletion
이 호출되지 않으므로 주의가 필요합니다.
참고 자료:
Spring Framework Documentation - Intercepting requests