[Spring] Filter & Interceptor 차이

이영재·2025년 9월 19일

Spring

목록 보기
19/20

0. 들어가며

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

1. 필터(Filter)

  • 서블릿 스펙 기반
  • DispatcherServlet 이전에 동작
  • 요청/응답 자체를 가로채서 처리
  • 모든 요청에 일괄적으로 적용이 가능

2. 인터셉터(Interceptor)

  • Spring MVC 전용
  • DispatcherServlet 이후, 컨트롤러 전후 단계에서 동작
  • 주로 인증/인가, 로깅, 성능 측정 등 비즈니스 로직 관련 처리에 활용
  • preHandle, postHandle, afterCompletion으로 세밀한 제어 가능

3. 비교

구분필터인터셉터
소속서블릿Spring MVC
실행 시점DispatcherServlet 이전DispatcherServlet 이후
적용 대상모든 요청/응답컨트롤러 요청/응답
활용보안, 인코딩, 요청/응답 가공인증/인가, 로깅, 모니터링

4. 회고

  • 면접 당시에는 동작의 위치만 설명하고 적용 범위나 사용 사례를 말하지 못했음.
  • 필터는 서블릿 전반, 인터셉터는 Spring MVC 컨트롤러 중심이라는 구분을 강조했어야 했다.

다음에 이렇게 대답하자

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

0개의 댓글