- 인터셉터(Interceptor) 란 ?


컨트롤러에 들어오는 요청 HttpRequest와 컨트롤러가 응답하는 HttpResponse를 가로채는 역할을 한다. 
예를들어 관리자만 접근할 수 있는 페이지의 경우, 페이지에 접근하기 전에 관리자 인증을 유도하는 용도로 활용할 수 있다. 
주로 로그인과 같은 권한 체크에 유용하게 사용된다. 

이와 유사한 역할을 하는 것이 'Filter'인데 Filter와 Interceptor는 비슷한 역할을 하지만 호출 시점에 차이가 있다. 

1. 호출 시점. 
Filter는 DispatcherServlet 이 실행되기 전, Interceptor는 DispatcherServlet이 실행된 후에 호출된다. 

2. 설정 위치
Filter는 web.xml에서 설정하고, Interceptor는 spring-servlet.xml에서 설정한다. 

 

Interceptor 구현 방법은 2가지가 있는데, 하나는 HandlerInterceptor인터페이스를 구현하는 방법과 
다른 하나는 HandlerInterceptorAdapter 클래스를 상속 받는 방법이 있다. 

메서드는 Controller의 실행 직전, 직후에 실행되는 preHandle()과 postHandle()이 있고, 
뷰를 렌더링 한 후의 콜백 핸들러 실행 결과에 따라 호출되는 afterCompletion()이 있다. 

'Java' 카테고리의 다른 글

자바 람다(Lamda) 기초  (0) 2021.02.13
자바 스트림(Stream)  (0) 2021.02.09
자바 HashMap 탐색 entrySet(), keySet(), Iterator()  (0) 2021.02.03
자바 Primitive Type과 Reference Type  (0) 2020.02.26
자바 [getOrDefault, putIfAbsent]  (0) 2020.01.22

+ Recent posts