필터(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 |