1. 인터셉터란
스프링 인터셉터는 디스패처가 컨트롤러에게 요청하기 전 데이터를 가로채는 것이다.

2. 구성요소
핸들러 인터셉터는 세 가지 메서드가 있다.
- preHandle() – 실제 핸들러가 실행되기 전에 호출됨
- postHandle() – 핸들러가 실행된 후 호출
- afterCompletion() – 전체 요청이 완료되고 뷰가 생성된 후 호출됩니다.
2-1 preHandle() 메서드
> 인터셉터가 요청을 처리하기 전에 호출합니다. 기본적으로 true를 반환하여 다음 메서드가 실행되지만, false가 실행되면 요청을 중지합니다.
2-2 postHandler() 메서드
> 핸들러(Controller) 실행 후 DispatcherServlet이 뷰를 렌더링 하기 전에 이 메서드를 호출합니다.
2-3 afterCompletion() 메서드
> 뷰가 렌더링 된 후 이 메서드를 사용하여 요청 및 응답 데이터를 얻을 수 있습니다.
3. 구현
HandlerInterceptor 또는 HandlerInterceptorAdaptor 인터페이스를 상속받고 구현해야 하지만 스프링이 알 수 있도록 등록해줘야 한다.
WebMvcConfigurer에 addInterceptors 메서드를 오버라이드 하여 특정 url이 호출될 때 가로챌 수 있도록 등록해 준다.


내가 사용하는 것은 spring boot이므로 spring을 사용하면 web.xml에 등록해주자. 또한 spring boot를 사용하는 경우 구성 클래스에 @EnableWebMvc를 달 필요가 없다고 한다.
4. 왜 사용하는가?
컨트롤러가 실행되기 전 요청을 가로채므로 추가적인 작업을 요청할 때 사용할 수 있다. 권한 체크라든지 로그인 체크 등을 할 수 있을 것 같다. 사전에 불필요한 요청을 방지하므로 컨트롤러의 역할이 줄일 수 있지 않을까 한다.
'Spring > 스프링 부트' 카테고리의 다른 글
| 2021-12-18 (스프링) @PathVariable 어노테이션 (0) | 2021.12.18 |
|---|---|
| 2021-12-17(JPA) @MappedSuperClass 공부 내용 정리 (0) | 2021.12.17 |
| 2021-11-24(스프링 공부) form태그의 content- type (0) | 2021.11.24 |
| 2021-11-16 (스프링) @RestController 와 @Controller (0) | 2021.11.16 |
| 2021-11-11 (회고록) 11일 공부정리 (0) | 2021.11.11 |