인터셉터(Interceptor)란?
컨트롤러(Controller)의 '핸들러(Handler)'를 호출하기 전과 후에 요청과 응답을 참조하거나 가공할수 있는 일종의 필터
- 웹 컨테이너 영역에서 동적하는 필터와 달리 인터셉터는 스프링 컨텍스트 영역에서 동작
- Intercetor의 본명은 Handler Interceptor로 Spring 웹 Application Context에 구성하여 Container의 기능을 자유롭게 활용할 수 있으며 그 내부에 선언된 Bean을 참조할 수 있다.

Interceptor Method
- preHandle
- Dispatcher Sevlet에서 Handler Mapper나 Controller가 실행 전 동작하는 Method
- 실행되어야 할 Handler에 대한 정보를 인자값으로 받기 때문에 Servlet Filter에 비해 세밀한 로직을 구성할 수 없음
- 리턴값이 boolean으로 리턴이 true일 경우 preHandle Method를 실행 후 핸들러에 접근하지만 false인 경우 작업을 중단하기 때문에 Controller와 남은 Interceptor가 실행되지 않음
- postHandle
- dispatcherServlet에서 HandlerMapper나 Controller의 기능 수행 후에 처리 후 dispatcherServlet에 가기 전에 수행할 기능을 기술하는 method
- ModelAndView 타입의 정보가 인자값으로 받아서 Controller에서 View 정보를 전달하기 위해 작업한 Model 객체의 정보를 참조하거나 조작할 수 있다.
- preHandle 에서 리턴값이 fasle인경우 실행되지않음.
- 비동기적 요청처리 시에는 처리되지않음.
- afterCompletion
- postHandle이후 수행 해야 할 기능이 있으면 기술하는 method이다.
- 요청 처리중에 사용한 리소스를 반환해주기 적당한 Method
- preHandle 에서 리턴값이 fasle인경우 실행되지않음.