Backend/Java & Spring

filter와 interceptor의 차이

khu2172 2025. 6. 1. 23:35

필터(Filter)

필터는 스프링 프레임워크에서 제공되는 기능이지만, DispatcherServlet 이전 단계에서 동작하며, 주로 웹 애플리케이션 서버(톰캣 등)에 의해 관리된다. 필터는 모든 HTTP 요청과 응답의 전후 처리를 담당할 수 있고, 요청 내용을 변경하거나 보안적인 검증을 수행할 수 있다.

필터의 주요 특징

  • 웹 애플리케이션 서버가 관리하며 스프링 컨텍스트 외부에서 동작한다.
  • DispatcherServlet 이전 단계에서 요청을 가로채 처리한다.
  • 인코딩 변환, XSS 공격 방어, 요청 로깅 등과 같은 일반적인 웹 보안 및 요청 처리 작업에 사용된다.
  • 응답 내용도 변경할 수 있어 요청과 응답 양방향 모두 관여할 수 있다.

인터셉터(Interceptor)

인터셉터는 스프링 컨텍스트 내부에서 DispatcherServlet과 Controller 사이에서 동작하며, 요청 처리 흐름의 전후 처리 및 예외 처리 등 보다 정밀한 작업을 수행할 수 있다.

인터셉터의 주요 특징

  • DispatcherServlet과 Controller 사이에서 실행된다.
  • 스프링 컨텍스트 내부에서 관리되며 모든 스프링 빈에 접근할 수 있다.
  • 로그인 체크, 권한 확인, 성능 측정(실행 시간), 로깅 등의 기능을 수행한다.
  • 여러 개의 인터셉터를 설정해 체인 형태로 사용할 수 있다.

AOP(Aspect-Oriented Programming)

AOP는 OOP(Object-Oriented Programming)를 보완하기 위해 등장한 프로그래밍 패러다임으로, 공통적으로 반복되는 기능을 분리하여 유지 보수성과 재사용성을 높이는 것을 목표로 한다.

AOP의 주요 특징

  • 객체 지향 프로그래밍에서 해결하기 어려운 횡단 관심사(cross-cutting concerns)를 처리하는 데 유용하다.
  • 로깅, 트랜잭션 관리, 예외 처리 등 다양한 비즈니스 로직에서 공통적으로 사용되는 기능에 적합하다.
  • 인터셉터나 필터와 달리 메소드 전후, 예외 발생 시점 등 자유롭게 실행 지점을 지정할 수 있다.
  • 주소(URL), 메소드 파라미터, 애노테이션 등을 활용하여 대상을 세부적으로 선택할 수 있다.

AOP의 주요 용어

  • Advice: 특정 지점에서 실행되는 코드(로깅, 트랜잭션 관리 등)
  • JoinPoint: Advice가 실행될 수 있는 특정 시점(메소드 실행 시점 등)
  • PointCut: Advice가 적용될 특정 지점을 정의
  • Aspect: Advice와 PointCut을 함께 정의한 모듈

필터 vs 인터셉터 vs AOP 

기능 Filter Interceptor AOP
관리 주체 WAS Spring Spring
동작 위치 DispatcherServlet 이전 DispatcherServlet과 Controller 사이 메소드 전후 자유롭게
적용 대상 URL 단위 URL 단위 메소드, 파라미터, 애노테이션 등
용도 인코딩 처리, 보안 처리 로그인, 권한 체크 로깅, 트랜잭션, 예외 처리 등

 

이러한 특징과 차이점을 이해하고 적절히 활용하면 더 명확하고 유지 보수하기 쉬운 애플리케이션 개발이 가능해진다.

'Backend > Java & Spring' 카테고리의 다른 글

Spring Security 인증 과정  (0) 2025.06.10
Spring Bean Life Cycle  (0) 2025.06.03
애노테이션(Annotation)이란?  (0) 2025.05.30
제네릭(Generic)이란?  (1) 2025.05.28
인스턴스화란 무엇인가?  (1) 2025.05.27