Spring이 실행되는 흐름은 아래 그림과 같다. 아래 그림과 함께 인터셉터가 무엇인지 살펴보자.
클라이언트로부터 요청(Request)이 들어오면, Filter가 있다면 Filter를 수행한 후, DispatcherServlet을 수행한다.
즉, 필터는 요청이나 응답이 처리되기 전 거치는 것이다.
DispatcherServlet은 선처리 작업할 것이 존재하면 선처리 작업을 해주고, HandlerMapping을 통해 실제 어떤 Handler가 동작을 해야 되는지 알아내고, 그 Handler를 실행시킨다.
위 그림을 보면 DispatcherServlet와 Handler 사이에 HandlerInterceptor라고 하는 것이 있다는 것을 볼 수 있을 것이다.
이런 것들을 거쳐 요청 작업이 끝나면 응답 정보를 DispatcherServlet에게 넘겨주고, ViewResolver로 View 정보를 얻어와 해당 View를 찾아 응답하는 일까지 수행한다.
이처럼 인터셉터는 DispatcherServlet에서 Handler로 요청을 보낼 때, Handler에서 DispatcherServlet로 응답을 보낼 때 동작을 하게 되는 것이다.
그래서 인터셉터로 컨트롤러 실행 전과 후에 공통 로직을 처리할 수 있다.
이런 인터셉터를 작성하는 방법은 다음과 같다.
- org.springframework.web.servlet.HandlerInterceptor 인터페이스를 구현한다.
- org.springframework.web.servlet.handler.HandlerInterceptorAdapter 클래스를 상속받는다.
- Java Config를 사용한다면, WebMvcConfigurerAdapter가 가지고 있는 addInterceptors 메서드를 오버라이딩하고 등록하는 과정을 거친다.
- 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 |
댓글