본문 바로가기
Spring/Spring MVC

필터(Filter)와 인터셉터(Interceptor)

by doriver 2022. 12. 7.

필터(Filter)와 인터셉터(Interceptor)는 컨트롤러가 수행되기 전/후 처리를 위한 개념이다.

 

Filter

필터는 Spring Context에 포함되지 않는다.
요청 전/후에 대한 처리를 할 수 있다.

 

FilterChain 클래스를 통해 여러 필터를 적용할 수 있다.

메소드 종류

  • init() : 필터 인스턴스 초기화
  • doFilter() : 전/후 처리
  • destory() : 필터 인스턴스 종료

 

 

Interceptor

Spring 내부에 존재하며, 스프링 내의 모든 객체(Spring Bean)에 접근 가능하다.
요청 전/후에 대한 처리를 할 수 있다.

 

사용 예로는 로그인 여부 확인, 권한 확인 등이 있다.
인증체크 후 어느 컨트롤러로 매핑할 지 제어할 경우 사용하기 적합하다.

 

메소드 종류

  • preHandle() : Controller가 실행 전에 먼저 수행된다.
    • false 리턴: Controller를 수행하지 않는다.
    • true 리턴: Controller를 수행시킨다.
  • postHandle() : Controller 수행 후 수행된다. View 렌더링 전이므로 Model과 View를(ModelAndView) 가지고 있다.
    • 리턴값 없음
  • afterCopletion() : View가 렌더링 된 이후 호출된다.
    • 리턴값 없음