Spring

Spring Interceptor

 

 

Spring Interceptor

인터셉터는 중간에서 가로챈다는 의미를 가진다. 스프링에서도 말 그대로 중간에 요청을 가로채서 어떠한 일을 하는 것을 말한다. 인터셉터의 정식 명칭은 핸들러 인터셉터(Handler Interceptor)이다. 클라이언트의 요청이 컨트롤러에 가기 전에 가로채고, 응답이 클라이언트에게 가기전에 가로챈다. 즉, 인터셉터는 DispatcherServlet이 컨트롤러를 요청하기 전,후에 요청과 응답을 가로채서 가공할 수 있도록 해준다.

1. HandlerInterceptor 인터페이스를 상속받아 interceptor 구현

HandlerInterceptor 인터페이스를 상속받으면, 아래 3개의 메소드를 오버라이드한다.

- preHandle : 클라이언트의 요청을 컨트롤러에 전달하기 전에 호출된다. 여기서 false를 리턴하면 다음 내용(Controller)을 실행하지 않는다.

- postHandle : 클라이언트의 요청을 처리한 뒤에 호출된다. 컨트롤러에서 예외가 발생되면 실행되지 않는다.

- afterCompletion : 클라이언트 요청을 마치고 클라이언트에서 뷰를 통해 응답을 전송한뒤 실행이 된다. 뷰를 생성할 때에 예외가 발생할 경우에도 실행이 된다.

 

2. interceptor 설정 등록

order을 통해서 interceptor의 순서를 조절할 수 있다.

3. 결과

 

앞선 포스팅에서 aop와 filter을 진행했었는데 이번 interceptor를 등록하고나서 실행시키면 

filter -> interceptor -> controller -> aop -> service -> aop(around같이 전후 실행인 경우) -> controller -> interceptor -> filter

의 순서로 실행되는 것을확인 할 수 있다.

'Spring' 카테고리의 다른 글

Spring 트랜잭션 전파  (0) 2021.05.29
springboot에서 redis 다루기  (0) 2021.05.23
Spring Filter  (0) 2021.04.10
Spring AOP  (0) 2021.04.09
Spring Filter, Interceptor, AOP 비교  (0) 2021.04.09