반응형
-
인터셉터 / 핸들러매핑에 대해서알아보자.
- 인터셉터란 무엇일까?
- 인터셉터란, 웹브라우저에서 특정 URI로 요청할 경우, 핸들러(Controller)로 가는 요청을 가로채는 역할하며,
- 아래 플로우를 따름
- preHandle -> (Handler call) -> postHandle -> (요청처리완료) -> afterCompletion
- 즉, 해당 preHandle / postHandle / afterCompletion 메소드 를 구현하여 특정 로직을 수행하게 만들 수 있음.
- 아래 플로우를 따름
- (참고)Spring MVC request life cycle
-
- 출처 및 참고페이지
- 설명
- 위 그림을 보면, HandlerInterceptor에 대해서 명확하게 알 수 있음.
- 즉, HandlerInterceptor 부분을 확인하면 됨.
- 위 그림을 보면, HandlerInterceptor에 대해서 명확하게 알 수 있음.
-
- 인터셉터란, 웹브라우저에서 특정 URI로 요청할 경우, 핸들러(Controller)로 가는 요청을 가로채는 역할하며,
- 인터셉터(HandlerInterceptor)는 어느 경우에 사용할까?
- 핸들러에 대한 요청을 인터셉트하는 데 사용함.
- 또한, 요청 전후에 일부 처리를 할때 사용함.
- 그리고, 요청 / 응답의 내용을 기록하거나 소요된 시간을 알아낼 때 사용함.
- 그럼, HandlerInterceptor를 만드는 단계를 알아보자.
- 아래 2단계가 필요함
- 첫째, HandlerInterceptor를 정의해야 함.
- 둘째, HandlerInterceptor를 인터셉트할 특정 핸들러에 매핑함.
- 아래 2단계가 필요함
- 핸들러매핑(HandlerMapping)이란?
- URL / 컨트롤러간의 매핑이 핸들러 매핑이라는 것을 사용해 표현함.
- 스프링 2.3 이전 버전(즉, 어노테이션이 지원되기 전을 말함)
- but, 지금 처럼 어노테이션을 사용하면 명시적인 핸들러 매핑이 필요하지 않음.
- URL / 컨트롤러간의 매핑이 핸들러 매핑이라는 것을 사용해 표현함.
- 인터셉터란 무엇일까?
-
그럼, HandlerInterceptor의 정의에 대해서 알아보자.
- 우선, HandlerInterceptorAdapter 에서 재정의 할 수 있는 메소드는 아래와 같음.
- preHandle
- postHandle
- afterCompletion
- 첫째, preHandle 에 대해서 알아보자.
- 우선, HandlerInterceptorAdapter 에서 재정의 할 수 있는 메소드는 아래와 같음.
- 설명
- 핸들러 메소드가 호출되기 전에 호출되는 메소드
- 둘째, postHandle 에 대해서 알아보자
- 설명
- 핸들러 메소드가 호출된 후 호출되는 메소드
- 셋째, afterCompletion에 대해서 알아보자
- 설명
- 요청 처리가 완료된 후 호출되는 메소드
- HandlerInterceptor 생성 예시
- 핸들러가 실행되는 시간을 계산해서 로깅하는 인터셉터(HandlerTimerLogInterceptor)를 생성해보자.
- 첫째, HandlerInterceptorAdapter를 상속하는 클래스 생성
- 핸들러가 실행되는 시간을 계산해서 로깅하는 인터셉터(HandlerTimerLogInterceptor)를 생성해보자.
- 둘째, preHandle메소드 생성
- 셋째, postHandle메소드 생성
- 마지막으로, AfterCompletion 메소드 생성
- 여기까지, 메소드를 생성하면, 아래의 플로우를 따르는 생성 작업을 완료하게 된다.
- preHandle -> (Handler call) -> postHandle -> (요청처리완료) -> afterCompletion
- 그럼, 이어서, 위에서 생성한 HandlerInterceptor 를 핸들러에 매핑하는 작업을 해보자.
그럼, HandlerInterceptor를 핸들러에 매핑하는 것에 대해서 알아보자.
- HandlerInterceptor 는 인터셉터하고자 하는 특정 URL에 매핑가능함.
- 그리고, 인터셉터는 디폴트로, 모든 컨트롤러를 인터셉트함.
- 그럼 실제 예시를 통해서 알아보자.
- 아래는, XML 컨텍스트 구성 예제임
아래는, 정확한 URI를 인터셉트할 수 있도록 구성하는 예제임
- 설명
- "/thub/"로 시작하는 URI 매핑이 있는 핸들러를 제외한 모든 핸들러를 인터셉트함.
결론
- 인터셉터란, 웹브라우저에서 특정 URI로 요청할 경우, 핸들러(Controller)로 가는 요청을 가로채는 역할함.
- 인터셉터를 통해서 핸들러 호출 전/후/완료 시 특정 로직을 수행하도록 활용할 수 있음.
- 오늘도 인터셉터에 대한 지식 마술(?) 한가지 획득완료! 감사합니다. ^^
300x250
'좋아하는 것_매직IT > 1.spring' 카테고리의 다른 글
15.Spring, 스프링MVC의 핵심개념 중 세션속성(SessionAttribute)에 대해서 알아볼께요. (0) | 2021.01.02 |
---|---|
14.Spring, 스프링MVC의 핵심개념 중 모델속성(ModelAttribute)에 대해서 알아볼께요. (0) | 2021.01.02 |
12.Spring, 스프링MVC의 핵심개념 중 뷰(View) 리솔루션 에 대해서 알아볼께요. (0) | 2021.01.02 |
11.Spring, 스프링MVC의 핵심개념 중 RequestMapping 에 대해서 알아볼께요. (0) | 2021.01.02 |
10.Spring, 그럼 스프링 MVC 아키텍처가 어떻게 동작을 하는지 간단하게 알아볼까요? (0) | 2021.01.02 |