본문 바로가기
JAVA

인터셉터(Interceptor) - Cotroller 공통 로직 처리하기

by enai 2019. 8. 26.

Spring이 실행되는 흐름은 아래 그림과 같다. 아래 그림과 함께 인터셉터가 무엇인지 살펴보자.

 

 

클라이언트로부터 요청(Request)이 들어오면, Filter가 있다면 Filter를 수행한 후, DispatcherServlet을 수행한다.

즉, 필터는 요청이나 응답이 처리되기 전 거치는 것이다.

DispatcherServlet은 선처리 작업할 것이 존재하면 선처리 작업을 해주고, HandlerMapping을 통해 실제 어떤 Handler가 동작을 해야 되는지 알아내고, 그 Handler를 실행시킨다.

위 그림을 보면 DispatcherServlet와 Handler 사이에 HandlerInterceptor라고 하는 것이 있다는 것을 볼 수 있을 것이다.

이런 것들을 거쳐 요청 작업이 끝나면 응답 정보를 DispatcherServlet에게 넘겨주고, ViewResolver로 View 정보를 얻어와 해당 View를 찾아 응답하는 일까지 수행한다.

 

이처럼 인터셉터는 DispatcherServlet에서 Handler로 요청을 보낼 때, Handler에서 DispatcherServlet로 응답을 보낼 때 동작을 하게 되는 것이다.

그래서 인터셉터로 컨트롤러 실행 전과 후에 공통 로직을 처리할 수 있다.

이런 인터셉터를 작성하는 방법은 다음과 같다.

  1. org.springframework.web.servlet.HandlerInterceptor 인터페이스를 구현한다.
  2. org.springframework.web.servlet.handler.HandlerInterceptorAdapter 클래스를 상속받는다.
  3. Java Config를 사용한다면, WebMvcConfigurerAdapter가 가지고 있는 addInterceptors 메서드를 오버라이딩하고 등록하는 과정을 거친다.
  4. xml 설정을 사용한다면, <mvc:interceptors> 요소에 인터셉터를 등록한다.

 

 

 

 

출처)

edwith 부스트코스 웹 프로그래밍

- 인터셉터란?

'JAVA' 카테고리의 다른 글

로깅에 대하여  (0) 2019.09.12
enum으로 코드 줄이기  (0) 2019.09.04
아규먼트 리졸버(Argument Resolver)  (0) 2019.08.26
세션(Session) 이용하는 방법  (5) 2019.08.26
쿠키(Cookie) 이용하는 방법  (0) 2019.08.23

댓글