클라이언트가 서버 측 애플리케이션으로 요청을 전송하면 제일 먼저 Servlet Filter를 거치게 된다.
그리고 Filter에서의 처리가 모두 완료되면
DispatcherServlet에서 클라이언트의 요청을 핸들러에 매핑하기 위한 다음 작업을 진행한다.
Servlet FilterChain은 요청 URI path를 기반으로 HttpServletRequest를 처리한다. 따라서 클라이언트가 서버 측 애플리케이션에 요청을 전송하면 서블릿 컨테이너는 요청 URI의 경로를 기반으로 어떤 Filter와 어떤 Servlet을 매핑할지 결정한다.
Filter는 Filter Chain 안에서 순서를 지정할 수 있으며 지정한 순서에 따라서 동작하게 할 수 있다.
Filter Chain에서 Filter의 순서는 매우 중요하며 Spring Boot에서 여러 개의 Filter를 등록하고 순서를 지정하기 위해서는 다음과 같은 두 가지 방법을 적용할 수 있다.
Spring Bean으로 등록되는 Filter에 @Order
애너테이션을 추가하거나 Ordered
인터페이스를 구현해서 Filter의 순서를 지정할 수 있다.
FilterRegistrationBean 을 이용해 Filter의 순서를 명시적으로 지정할 수 있다.