2017년 5월 13일 토요일

Spring request interceptor 설정

스프링 리퀘스트 인터셉터를 통해, 각각의 request path에 적용되는 interceptor를 생성할 수 있다.
이 글에서는 /hello 로 시작되는 모든 path에 적용되는 interceptor를 생성해보도록 하겠다.

아래 interceptor는 해당 response를 인터셉트하여 interceptor-header라는 header를 response에 붙여주게 된다.

public class HelloInterceptor extends HandlerInterceptorAdapter {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        log.info("interceptor intercept request");
        response.addHeader("interceptor-header", "interceptor added");
        return true;
    }
}

아래 WebConfig를 통해, 위 인터셉터는 /hello/** 와 같은 request path에 적용되게 된다.

@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {

    @Autowired
    private HelloInterceptor helloInterceptor;

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

Test를 위해 /hello 와 /bye 라는 request path를 이용하는 request service를 생성하고,
테스트해보도록 한다.

아래 결과와 같이 /hello로 시작하는 request는 우리가 적용한 header가 적용되고,
/bye로 시작하는 request는 적용되지 않는 것을 알 수 있다.

- 실행 결과











위 전체 예제를 다운로드 받기 위해서, 아래 링크를 통해 이용할 수 있다.

https://gitlab.com/shashaka/request-interceptor-project

댓글 없음 :

댓글 쓰기