[스프린터스] 스프링 필터와 인터셉터의 차이점

MSK·2022년 6월 17일
0

Filter와 Interceptor은 모두 Servlet 전후 처리를 담당한다.


Filter

  • J2EE 표준 스펙 기능
  • javax.servlet의 Filter 인터페이스를 구현
  • DispatcherServlet에 요청이 도달하기 전에 실행
  • Spring context가 아닌 Web Application(톰캣아저씨)에 등록
  • ServletRequest/ServletResponse에 직접 접근이 가능함
  • doFilter 메서드를 통해 호출
  • 로깅이나 인증 등에서 많이 사용

Interceptor

  • Spring이 제공하는 기술로 Spring context에 등록(@Component)
  • org.springframework.web.servlet의 HandlerInterceptor 인터페이스를 구현
  • Spring 내부의 예외처리에 접근할 수 있음
  • 인증 단계를 처리

차이점

  • 객체 관리: Filter은 Web Application(톰캣아저씨)에 등록, Interceptor은 Spring context에 등록(@Component)에 등록 됨
  • 실행 시점: DispatcherServlet이 실행 되기 전/후로 나뉨
  • 따라서 요청이 들어올 때, Spring과의 연관성을 생각하여 적절한 것을 선택할 수 있어야함

추가 질문: DispatcherServlet?

클라이언트에서 받은 요청을 적절한 Controller을 찾아 위임하는 역할로 FrontController이라고도 함

참고 자료

profile
여긴어디나는누구

0개의 댓글