일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Refactoring
- load balancing
- java
- clean code
- spring boot
- 시큐리티
- 클린코드
- gdg
- apache
- tomcat
- JWT
- JPA
- assertj
- g1
- OAuth
- 비동기
- 스프링 부트
- Security
- jvm
- 페이스북
- Spring
- Producer
- RabbitMQ
- oauth2
- 페이징
- 리팩토링
- 권한
- 스프링부트
- GC
- 스프링
Archives
- Today
- Total
허원철의 개발 블로그
Spring Boot - Interceptor 본문
이번 글은 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')
}
- 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