허원철의 개발 블로그

Spring Boot - Interceptor 본문

web

Spring Boot - Interceptor

허원철 2016. 12. 4. 22:04


이번 글은 Interceptor에 대한 글 입니다.



interceptor 란 ?
- 가로채는 것, 요격기 라는 뜻 입니다. 다시 말해서, Url Mapping 된 Controller를 거치는 전, 후 처리를 할 수 있도록 도와주는 요소 입니다. 로그인된 유저 체크, 로그 처리 같은 것들을 매번 하지 않고 Interceptor 를 통해 해주면 될 것 입니다.

물론! 예외적인 처리도 할 수 있습니다.

1. Gradle 설정
2. Component 설정
3. Config 설정
4. Controller 설정
5. 결과
6. Advice 설정



1. Gradle 설정

- spring-webmvc.jar 를 열어보면 interceptor를 구현 할 수 있는 인터페이스가 있습니다. 이를 위해, spring-boot-starter-web 을 받습니다.

dependencies {
	compile('org.springframework.boot:spring-boot-starter-web')
	testCompile('org.springframework.boot:spring-boot-starter-test')
}


2. Component 설정
- HandlerInterceptorAdaptor 를 상속 받은 클래스를 구현 해줍니다.



- preHandle() : 맵핑되기 전 처리를 해주면 됩니다.
- postHandle() : 맵핑되고난 후 처리를 해주면 됩니다.
- afterCompletion() : 뷰에서 모든 작업이 완료된 후 실행됩니다.

3. Config 설정
- 인터셉터를 등록해줍니다.


- 인터셉터를 등록한 후, / 이후에 모든 Path는 인터셉터를 거치고 /user/ 이후에 모든 Path는 거치지 않도록 설정 했습니다.

4. Controller 설정
[IndexController]


[UserController]



예시로,

들어가게 되면, msg 에 해당하는 문구가 웹 브라우저와 Console에 보일 것 입니다.

5. 결과



- config 설정에서 예외처리를 했듯이, UserController에 맵핑된 url 은 Interceptor를 거치지 않고 그대로 출력된 것을 볼 수 있습니다. 반면에, IndexController 에서는 Log 가 Console 에 출력된 것을 볼 수 있습니다. 

6. Advice 설정
- 예를 들면, HTTP 헤더 추가와 같은 인터셉터의 후처리 시점에 응답을 가공하는 작업이 불가능 해진다고 합니다. 이 경우 ResponseBodyAdvice 를 구현하여 beforeBodyWrite에서 재정의 해줍니다.


'web' 카테고리의 다른 글

Spring Boot - Test  (406) 2016.12.05
Spring Boot - AOP  (424) 2016.12.04
Spring Boot - Social (Facebook)  (411) 2016.12.04
Spring Boot - WebSocket  (396) 2016.12.04
lonic Framework - Angular  (421) 2016.12.04
Comments