Spring/SpringBoot

[SpringBoot] Interceptor 설정하기

Bogass 2024. 3. 21. 17:34

Interceptor

  • Interceptor : 요청에 대한 작업 전/후로 가로챈다.
    • Filter와 다르게 DispatcherServelt이 컨트롤러를 호출하기 전, 후로 끼어들기 때문에 Spring context영역 내부에서 controller에 관한 요청과 응답에 대해 처리.
  • HandlerInterceptor 를 구현하여 사용하며 preHandle,postHandle,afterCompletion 메서드를 구현하여 사용가능하다.
    • preHandle : 컨트롤러 실행 전
    • postHandle : 컨트롤러 수행 후 결과를 뷰로 보내기 전
    • afterCompletion : 뷰의 작업까지 완료된 후 수행

 

WebConfing 설정

  • interceptor 사용 설정은 아주 간단하다
  • addInterceptor 를 통해 생성한 인터셉터를 넣어주고 적용할 패턴을 작성하면 된다.
@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/resources/**")
                .addResourceLocations("classpath:/static/");
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry){
        registry.addInterceptor(baseInterceptor()).addPathPatterns("/**");
    }

    @Bean
    public BaseInterceptor baseInterceptor(){
        return new BaseInterceptor();
    }
}

 

BaseInterceptor

  • 간단하게 디버깅을 해보면 요청 전/후로 각 메서드에서 요청을 가로채는것을 확인 할 수 있다.
public class BaseInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("preHandle");
        return true;
    }
}