Filter vs Interceptor
이 문서에서는 스프링 필터와 인터셉터의 공통점, 차이점, 특징에 대해 살펴본다.
공통점
인터셉터와 필터는 다음의 공통점을 가진다.
간섭 객체
필터와 인터셉터 모두 특정한 패턴의 URL에 대한 간섭을 수행할 수 있는 AOP 구현체들이다.
인터셉터에서 preHandle
메소드만 사용한다면 필터를 이용한 것과 유사한 효과가 발생한다.
차이점
간섭 시점
필터는 DispatcherServlet
이 실행되기 전 상태의 요청을 간섭한다.
인터셉터는 DispatcherServlet
이 실행 중 상태를 간섭한다.
따라서 인터셉터는 DispatcherServlet
이 처리하지 않는 상태(404 not found)는 처리할 수 없다.
하지만 필터는 404 not found도 간섭이 가능하다.
용도 차이
필터의 경우 다음의 작업이 가능하다.
요청, 응답 객체 교체
자주 쓰이는 작업은 아니지만 사용자가 보낸 요청을 기반으로 하여 새로운 요청을 만들어서 전송해야 할 경우 코드 구현이 가능하다.
위의 코드가 필터의 속행(통과) 코드인데, 위의 request
와 response
를 다른 값으로 변경할 수 있다.
하지만 인터셉터의 preHandle
에서의 속행 코드는 다음과 같기 때문에 다른 값으로 변경할 수 없다.
Last updated