filter와 interceptor의 차이

filter와 interceptor의 차이

생성일
Oct 26, 2024 03:39 PM
최종 편집 일시
Last updated October 28, 2024
태그
SPRING
이 둘은 HTTP 요청과 응답을 가로채어 추가 작업을 수행할 수 있게 해주는 컴포넌트다.
각각의 동작 위치와 역할이 다르다. 공통적으로 클라이언트 요청을 가로채어 처리하지만, 사용 목적과 동작 방식이 다르다.
 

1. Filter

  1. 위치 및 동작
    1. Filter는 서블릿 컨테이너 레벨에서 동작한다. 클라이언트 요청이 서블릿에 도달하기 전에 수행된다.
    2. 보안 관련 작업(인증, 권한 확인), 로깅, 인코딩 설정 등 전역적인 요청 처리 작업을 수행하는 데 유용하다.
  1. 설정방식
    1. jakarta.servlet.Filter 인터페이스를 구현하여 사용한다.
    2. @WebFilter 어노테이션이나 FilterRegistrationBean을 사용하여 스프링 부트에서 등록할 수 있다.
  1. 작동 순서
    1. 필터는 DispatcherServlet이 호출되기 전에 실행되며, 필터 체인에서 설정된 순서대로 실행된다.
  1. 주용도
    1. 요청/응답 가공
    2. 공통적인 전처리 및 후처리 작업 (CORS 설정, 인증 토큰 검증)

2. Interceptor

  1. 위치 및 동작
    1. HandlerInterceptor는 스프링의 DispatcherServlet이 컨트롤러를 호출하기 직전 및 직후에 동작하며, 스프링 MVC의 라이프사이클에서 관리된다.
  1. 목적
    1. 특정 URL 패턴에 대한 요청 전후 처리, 컨트롤러와 관련된 세부 요청/응답 처리, 그리고 컨트롤러 로직에 따라 특정 작업을 할 때 유용하다.
  1. 설정 방식
    1. HandlerInterceptor인터페이스를 구현하고, WebMvcConfigurer를 사용하여 등록한다.
  1. 주용도
    1. 특정 컨트롤러 호출 전후에 로직 실행
    2. 세션 체크, 권한 검사, 로깅, 요청 데이터 검증 등 컨트롤러와 관련된 작업 수행

3. Filter와 Interceptor의 차이점

Filter
Interceptor
위치
서블릿 컨테이너 레벨
스프링 MVC 레벨
사용범위
전역적으로 적용됨
컨트롤러 전후에만 적용
주요목적
인증, 인코딩 설정, 로깅 등 전역 요청 처리
세션 체크, 권한 검사 등 컨트롤러 관련 요청 처리
동작시점
DispatcherServlet 전에 동작
DispatcherServlet 이후에 동작
설정방법
Filter 인터페이스 구현
HandlerInterceptor 인터페이스 구현