이번에 interceptor작업 할 일이 있어서 작업을 하다가 문득 이전에 학원에서 배우고 사용했던 AOP와의 차이가 뭔지 궁금해서 찾아보고 정리하게됨.
Filter, Interceptor, AOP
01. Filter, Interceptor, AOP의 개념
- Filter : 요청과 응답을 거른 뒤 정제 하는 역할.
- 서블릿 필터는
DispatcherSevelt이전에 실행이 되는데 필터가 동작하도록 지정된 자원의 앞단에서 요청 내용을 변경하거나 체크하는 동작을 수행. Spring context외부에 위치하여 스프링에 무관한 자원에 대하여 동작한다.- 자원 처리가 끝난 후 응답 내용에 대해서고 변경 가능하다.
- 서블릿 필터는
- Interceptor : 요청에 대한 작업 전/후로 가로챈다.
- Filter와 다르게
DispatcherServelt이 컨트롤러를 호출하기 전, 후로 끼어들기 때문에Spring context영역 내부에서 controller에 관한 요청과 응답에 대해 처리.
- Filter와 다르게
- AOP(Aspect Oriented Programming-관점지향프로그래밍) : OOP를 보완하기 위해 나온 개념
- 주로 로깅, 트랜잭션, 에러처리 등 비즈니스단의 메서드를 조금 더 세밀하게 조정하고 싶을 때 사용함.
- 메소드의 전후 지점에 자유롭게 설정 가능
- URL, Parameter, Annotation등 다양한 방법으로 대상을 지정 할 수 있음.
02. Filter, Interceptor, AOP의 차이
- Filter는
Web Application에 등록을 하고, Interceptor는Spring의 Context에 등록을 한다. - Interface의 차이
// Interceptor
public interface HandlerInterceptor {
boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler);
void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView mav);
void afterCompletion(HttpServletRequest request, HttpServeletResponse response, Object handler, Exception ex);
}
// filter
public interface Filter {
void doFilter(ServletRequest request, ServletResponse response, FilterChain chain);
}
03. Filter, Interceptor, AOP의 흐름

- Interceptor와 Filter는 Servlet 단위에서 실행된다. AOP는 메소드 앞에 Proxy패턴의 형태로 실행된다.
references
- https://goddaehee.tistory.com/154
- https://supawer0728.github.io/2018/04/04/spring-filter-interceptor/
https://hy1116.github.io/spring/SpringFilterInterceptorAOP/
Filter, Interceptor, AOP 개념 및 순서
이번에 interceptor작업 할 일이 있어서 작업을 하다가 문득 이전에 학원에서 배우고 사용했던 AOP와의 차이가 뭔지 궁금해서 찾아보고 정리하게됨.
hy1116.github.io
'Java & Spring > SpringFramework' 카테고리의 다른 글
| Spring MVC 레거시 프로젝트 업그레이드 part3 (0) | 2025.04.14 |
|---|---|
| Spring MVC 레거시 프로젝트 업그레이드 part2 (0) | 2025.03.06 |
| Spring MVC 레거시 프로젝트 업그레이드 (feat. Java8 + Spring 4.3 + Gradle ) (2) | 2025.02.25 |
| [Spring] Jasypt를 사용한 프로퍼티 암호화 (0) | 2023.03.09 |