📘Filter vs Interceptor vs AOP 비교
Spring 기반 웹 애플리케이션을 개발하다 보면 공통 관심사를 처리해야 할 때가 많다.
Filter, Interceptor, AOP 는 ****이런 기능을 처리할 수 있는 대표적인 도구이다.
대표적인 공통 관심사 처리 예시
클라이언트 요청
↓
[Filter] ← Servlet 수준
↓
[DispatcherServlet]
↓
[Interceptor] ← Spring MVC 수준
↓
@Controller
↓
[Service] (→ [AOP]) ← Spring Bean 수준
DispatcherServlet
보다 먼저 실행되고, 요청과 응답을 가장 처음 가로챔DispatcherServlet
이 컨트롤러를 호출하기 바로 전/후에 실행HandlerInterceptor
를 구현하여 preHandle
, postHandle
, afterCompletion
메서드를 사용@Service
같은 Spring Bean의 메서드 단위로 적용@Aspect
와 함께 @Before
, @AfterReturning
, @Around
등 어노테이션을 사용해 정의도구 | 언제 쓰면 좋은가? |
---|---|
Filter | 전체 HTTP 요청 처리, 정적 리소스 포함 |
Interceptor | 컨트롤러 요청 전후 처리, 인증/인가 |
AOP | 서비스 계층 로직에 대한 공통 처리, 트랜잭션/로깅/예외 |
출처 : https://twofootdog.github.io/Spring-필터(Filter),-인터셉터(Interceptor),-AOP-차이점/