1. 인터셉터란


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

 

 

2. 구성요소

 


핸들러 인터셉터는 세 가지 메서드가 있다.

 

  • preHandle() – 실제 핸들러가 실행되기 전에 호출됨
  • postHandle()  핸들러가 실행된  호출
  • afterCompletion()  전체 요청이 완료되고 뷰가 생성된 후 호출됩니다.

 

2-1 preHandle() 메서드

> 인터셉터가 요청을 처리하기 전에 호출합니다. 기본적으로 true를 반환하여 다음 메서드가 실행되지만, false가 실행되면 요청을 중지합니다.

 

2-2 postHandler() 메서드

> 핸들러(Controller) 실행 후 DispatcherServlet이 뷰를 렌더링 하기 전에 이 메서드를 호출합니다.

 

2-3 afterCompletion() 메서드

> 뷰가 렌더링 된 후 이 메서드를 사용하여 요청 및 응답 데이터를 얻을 수 있습니다.

3. 구현


HandlerInterceptor 또는 HandlerInterceptorAdaptor 인터페이스를 상속받고 구현해야 하지만 스프링이 알 수 있도록 등록해줘야 한다.

WebMvcConfigurer에 addInterceptors 메서드를 오버라이드 하여 특정 url이 호출될 때 가로챌 수 있도록 등록해 준다.

커스텀 인터셉터 만들기
Handler 등록

내가 사용하는 것은 spring boot이므로 spring을 사용하면 web.xml에 등록해주자. 또한 spring boot를 사용하는 경우 구성 클래스에 @EnableWebMvc를 달 필요가 없다고 한다.

 

4. 왜 사용하는가?


컨트롤러가 실행되기 전 요청을 가로채므로 추가적인 작업을 요청할 때 사용할 수 있다. 권한 체크라든지 로그인 체크 등을 할 수 있을 것 같다. 사전에 불필요한 요청을 방지하므로 컨트롤러의 역할이 줄일 수 있지 않을까 한다.

+ Recent posts