최근 면접에서 스프링 필터 & 인터셉터 차이를 물어봤는데
"서블릿 앞에서 실행되는게 필터, 서블릿 이후에 실행되는게 인터셉터." 라고 밖에 대답을 못했다.
그래서 이번에 다시 정리하면서, 비슷한 질문에 대답할 수 있도록 정리한다.


| 구분 | 필터 | 인터셉터 |
|---|---|---|
| 소속 | 서블릿 | Spring MVC |
| 실행 시점 | DispatcherServlet 이전 | DispatcherServlet 이후 |
| 적용 대상 | 모든 요청/응답 | 컨트롤러 요청/응답 |
| 활용 | 보안, 인코딩, 요청/응답 가공 | 인증/인가, 로깅, 모니터링 |
필터는 서블릿 스펙 기반으로 DispatcherServlet 앞단에서 모든 요청/응답을 가로채고, 인터셉터는 Spring MVC 내부에서 컨트롤러 전후로 동작합니다. 그래서 인코딩이나 보안 같은 범용 처리는 필터에서, 인증/인가나 로깅 같은 로직은 인터셉터에서 처리하는 게 일반적입니다.