b

spring interceptor 본문

spring framework

spring interceptor

dev.bistro 2013. 11. 5. 00:36


술먹고... 쓰는 블로그.

오늘 업무시간의 마지막에 spring interceptor 얘기가 나왔다. 안쓰니 계속 까먹는건 나이 떄문이겠지...

Interceptor은 HandlerInterceptor를 implement 한다. 일종의 필터이다. 이 녀석은 결국에는 HandlerExecutionChain 안에서 handler와 List<HandlerInterceptor> interceptorList 으로 존재한다.  (List이다) 

이 녀석은 마침에 doDispatch 에서 불러지고  

HandlerInterceptor[] interceptors = mappedHandler.getInterceptors(); 이후에 for문을 돈다. 

여기에서 상황에 맞게 아니지 순서에 맞게.. interceptor.preHandle, triggerAfterCompletion,,  interceptor.postHandle를 순회하면서 HandlerInterceptor의 3가지 method를 다 실행하는 것이다.

정리하지면

1. DispatcherServlet이 내부적으로 적용하는 Filter와 같은 기능이다.

2. List이다.  즉 order 가 있다 하지만 order를 정의할 수 없는 메소드가 없으므로.. 아마 설정이 읽는 순서가 실행 순서가 되겠다.

단순해서 ... 더 쓸 말이 없다...


DispatcherServlet src : https://github.com/spring-projects/spring-framework/blob/master/spring-webmvc/src/main/java/org/springframework/web/servlet/DispatcherServlet.java

참고 메소드 : applyPreHandle, applyPostHandle, triggerAfterCompletion

Comments