12-5. Filter vs Interceptor vs AOP

박은서's avatar
Feb 24, 2026
12-5. Filter vs Interceptor vs AOP

1. Filter vs Interceptor vs AOP

1️⃣ Filter

1) 개념

  • Servlet 스펙에 포함된 웹 컴포넌트
  • HTTP 요청/응답을 서블릿 진입 전·후에 가로챔
  • Spring과 무관하게 컨테이너(Tomcat 등) 레벨에서 동작

2) 동작 위치

Client ↓ Filter ↓ DispatcherServlet ↓ Controller

3) 주요 특징

  • 모든 요청에 대해 동작 (정적 리소스 포함 가능)
  • HttpServletRequest / Response 직접 접근 가능
  • Spring Bean이 아님 (단, DelegatingFilterProxy로 연동 가능)

4) 대표 사용 사례

  • 인증/인가 (JWT, 세션 검사)
  • CORS 처리
  • 인코딩 설정
  • XSS 필터링
  • 공통 Request/Response 래핑

5) 핵심 인터페이스

javax.servlet.Filter

2️⃣ Interceptor

1) 개념

  • Spring MVC에서 제공하는 요청 가로채기 기술
  • Controller 실행 전·후, View 렌더링 이후에 개입 가능

2) 동작 위치

Client ↓ Filter ↓ DispatcherServlet ↓ Interceptor ↓ Controller

3) 주요 특징

  • Spring Context 내부에서 동작 (Spring Bean)
  • Controller 단위로 세밀한 제어 가능
  • HandlerMethod 정보 접근 가능
  • 정적 리소스는 기본적으로 제외

4) 주요 메서드

preHandle() // Controller 실행 전 postHandle() // Controller 실행 후 afterCompletion() // View 렌더링 후

5) 대표 사용 사례

  • 로그인 체크
  • 권한 검사 (Role 기반)
  • 요청별 로깅
  • Locale, TimeZone 처리
  • 공통 모델 데이터 주입

3️⃣ AOP (Aspect Oriented Programming)

1) 개념

  • 비즈니스 로직과 공통 관심사(Cross-cutting Concern) 분리
  • 메서드 실행을 프록시 기반으로 가로챔

2) 동작 위치

Controller / Service / Repository ↳ Proxy ↳ Aspect

3) 주요 특징

  • HTTP 개념과 무관
  • 메서드 호출 단위로 동작
  • Spring Bean에만 적용 가능
  • Pointcut 표현식으로 매우 정밀한 대상 지정 가능

4) 대표 사용 사례

  • 트랜잭션 관리 (@Transactional)
  • 로깅
  • 성능 측정
  • 예외 처리
  • 보안 체크

5) 주요 어노테이션

@Aspect @Before @After @Around

4️⃣ 핵심 차이점 비교

구분
Filter
Interceptor
AOP
표준
Servlet Spec
Spring MVC
Spring AOP
동작 레벨
웹 컨테이너
DispatcherServlet
메서드
HTTP 의존성
O
O
X
적용 대상
모든 요청
Controller
Spring Bean
정적 리소스
포함
기본 제외
해당 없음
실행 시점
가장 앞단
Controller 전/후
메서드 호출 시
접근 정보
Request/Response
Handler, Model
Method, Args
주요 용도
공통 웹 처리
요청 흐름 제어
비즈니스 관심사

5️⃣ 언제 무엇을 써야 할까?

✔ Filter가 적합한 경우

  • Spring 진입 이전에 처리해야 할 로직
  • 인증 토큰 파싱
  • CORS / Encoding / 보안 헤더

✔ Interceptor가 적합한 경우

  • Controller 기준 공통 처리
  • 로그인 여부 검사
  • 권한/메뉴 접근 제어
  • 요청 단위 로깅

✔ AOP가 적합한 경우

  • 비즈니스 로직 공통화
  • 트랜잭션, 로깅, 성능 측정
  • 서비스/레포지토리 계층 관심사 분리
Share article