Spring Framework/Spring Boot
[Spring Boot] Interceptor 설정
장쫄깃
2022. 4. 15. 15:54
728x90
Interceptor에 대한 설명은 해당 글을 참고
링크 : https://jangjjolkit.tistory.com/6
1. HandlerInterceptorAdapter를 상속받아 인터셉터 구현하기
스프링에서 인터셉터는 HandlerInterceptorAdapter를 상속받아 구현할 수 있다.
해당 클래스는 preHandle, postHandle, afterCompletion, afterConcurrentHandlingStarted를 포함하고 있다.
- preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
- 지정된 컨트롤러의 동작 이전에 수행할 동작 (사전 제어)
- postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)
- 지정된 컨트롤러의 동작 이후에 수행할 동작 (사후 제어)
- Spring MVC의 Dispatcher Servlet이 화면을 처리하기 전에 동착
- afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
- Dispatcher Servlet의 화면 처리가 완료된 이후 처리할 동착
- afterConcurrentHandlingStarted(HttpServletRequest request, HttpServletResponse response, Object handler)
- 비동기 요청 시 다른 메소드가 수행되지 않고 해당 메소드가 수행됨
public class SomeInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// ....
return super.preHandle(request, response, handler);
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
// ...
super.postHandle(request, response, handler, modelAndView);
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
// ...
super.afterCompletion(request, response, handler, ex);
}
@Override
public void afterConcurrentHandlingStarted(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// ...
super.afterConcurrentHandlingStarted(request, response, handler);
}
}
원하는 타이밍에 맞게 해당 메소드에 구현하면 된다.
2. HandlerInterceptorAdapter 구현 클래스를 빈(Bean)으로 등록하기
WebMvcConfigurer를 상속받는 Configuration 클래스를 생성하고 addInterceptors 메소드를 오버라이딩하고, 원하는 방식으로 구현한다.
@Configuration
public class InterceptorConfiguration implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new SomeInterceptor())
.addPathPatterns("/**") // 적용할 url 패턴
.excludePathPatterns("/some"); // 제외할 url 패턴
}
}
- addPathPatterns: 인터셉터가 적용될 url 패턴
- excludePathPatterns: 인터셉터 적용에서 제외될 url 패턴
728x90