Interceptor 개념 및 흐름

uglyduck.dev·2020년 9월 21일
0

개념 모아 🗂

목록 보기
16/40

Interceptor의 개념을 이해하기 위해서는 Spring request flow를 보고 전체적인 흐름을 파악한다.

Spring Request Flow

Spring Request Flow1.png

Filter

  • 사용자의 어떠한 요청이 있을 경우, 최전방에서 가장 먼저 거치는 곳.
  • 일반적으로 UTF-8 Encoding을 처리하는 기본 필터 중에 CharacterEncodingFilter를 호출할 수 있다.
  • Springframework MVC Architecture 기준으로 web.xml에서 설정이 가능하다.

DispatcherServlet

  • DispatcherServlet은 서블릿과 마찬가지로 Java 구성 또는 web.xml을 사용하여 서블릿 규격에 따라 선언 및 매핑한다. 그다음, DispatcherServlet은 Spring Config를 사용하여 Request Mapping, View Solution, Exception Handling 등에 필요한 대리 구성 요소를 검색한다.
  • Springframework MVC Architecture 기준으로 servlet-context.xml에서 설정이 가능하다.

HandlerInterceptor

  • 흔히 말하는 Spring Interceptor의 정식명칭은 HandlerInterceptor이다.
  • 실제로는 그림과 다르게 Controller의 외부를 감싸고 있다.
  • Controller의 실행 전, 실행 후를 처리할 수 있다.

HandlerInterceptor Flow

Spring Request Flow 2.png

=> 요청에 따른 특정 기능을 적용하려는 경우에 Interceptor는 Controller로 요청이 처리되기 전에 요청을 가로챌 수 있다.

  • preHandle(..): 실제 핸들러가 실행되기 전에 실행되며, boolean 값을 반환한다. 반환 값이 참일 경우에는 계속 실행되고 거짓일 경우, DispatcherServlet은 Interceptor 자체가 요청을 처리한 것으로 가정하고 다른 Interceptor 및 핸들러를 계속 실행하지 않는다.
  • postHandle(..): 핸들러가 실행된 후
  • afterCompletion(..): 전체 요청이 끝난 후

Reference

profile
시행착오, 문제해결 그 어디 즈음에.

0개의 댓글