Cute Running Puppy

🍃Spring

# 접근제어 인터셉터(interceptor) vs 필터(filter) 뭐가 나을까? 차이점

뭉지맘 2025. 6. 17. 11:55

요청흐름

 

 

인터셉터와 필터의 차이점은 무엇일까?

 

Filter

ServletContainer에서 가장 먼저 실행됨

정적 자원(CSS, JS 등)도 다 지나감

목적: 보안 필터, 토큰 검사, 요청 로깅, GZIP 압축 등 전역 처리

단점: Spring MVC 예외 처리와 연동 어려움, 실수 시 모든 요청 차단 위험

 

Interceptor

DispatcherServlet 내부에서만 작동함

정적 자원은 자동 제외됨

목적: 로그인 체크, 권한 검사, API 로깅 등 MVC 구조와 맞는 처리

장점: Spring의 예외 처리, 세션, 모델 등과 잘 연동됨

 

요점비교

항목 Filter Interceptor
실행위치 DispatcherServlet 이전 DispatcherServlet 내부
정적 자원 통과 여부 직접 걸러야 함 자동 제외
예외 핸들로 연동 불편함 잘 연동됨
일반적인 접근제어 불편 적합
사용 목적 보안/로깅/헤더 검사 인증/접근제어/요청 후 처리

 

 

권한이나 로그인 체크 같은곳에선 왜 인터셉터가 더 나을까?

이유 설명
DispatcherServlet 이후 실행됨 즉, 정적 리소스 같은 거 자동으로 제외됨 (개발자가 걸러낼 필요 없음)
MVC 구조에 잘 맞음 컨트롤러 앞/뒤에 붙어서 ModelAndView, request, session 활용에 최적
에러 핸들링 연동이 잘 됨 예외 발생 시 @ExceptionHandler, @ControllerAdvice와 궁합 좋음
Spring Boot는 기본적으로 필터보다 인터셉터에 최적화됨 대부분 구조가 @Controller, @RestController 기반이기 때문에

 

어떤 사용자가 어떤 URL에 접근 가능한지 제어하는 건
Spring MVC 컨트롤러 기준으로 동작하는 구조니까 당연히 Interceptor가 맞는 도구다.