Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- java
- 인터셉터
- network
- 관점지향프로그래밍
- Interceptor
- SQL
- proxy pattern
- mybatis
- aspect
- request
- git
- RestControllerAdvice
- 디자인패턴
- http
- Redis
- 스프링 시큐리티
- Spring
- 스프링부트
- Spring Security
- response
- Filter
- aop
- spring boot
- 스프링
- MYSQL
- 자바
- 트랜잭션
- 객체지향프로그래밍
- OOP
- exception
Archives
- Today
- Total
장쫄깃 기술블로그
[Spring Boot] Interceptor 설정 본문
728x90
Interceptor에 대한 설명은 해당 글을 참고
링크 : https://jangjjolkit.tistory.com/6
1. HandlerInterceptorAdapter를 상속받아 인터셉터 구현하기
스프링에서 인터셉터는 HandlerInterceptorAdapter를 상속받아 구현할 수 있다.
해당 클래스는 preHandle, postHandle, afterCompletion, afterConcurrentHandlingStarted를 포함하고 있다.
- preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
- 지정된 컨트롤러의 동작 이전에 수행할 동작 (사전 제어)
- postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)
- 지정된 컨트롤러의 동작 이후에 수행할 동작 (사후 제어)
- Spring MVC의 Dispatcher Servlet이 화면을 처리하기 전에 동착
- afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
- Dispatcher Servlet의 화면 처리가 완료된 이후 처리할 동착
- afterConcurrentHandlingStarted(HttpServletRequest request, HttpServletResponse response, Object handler)
- 비동기 요청 시 다른 메소드가 수행되지 않고 해당 메소드가 수행됨
public class SomeInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// ....
return super.preHandle(request, response, handler);
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
// ...
super.postHandle(request, response, handler, modelAndView);
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
// ...
super.afterCompletion(request, response, handler, ex);
}
@Override
public void afterConcurrentHandlingStarted(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// ...
super.afterConcurrentHandlingStarted(request, response, handler);
}
}
원하는 타이밍에 맞게 해당 메소드에 구현하면 된다.
2. HandlerInterceptorAdapter 구현 클래스를 빈(Bean)으로 등록하기
WebMvcConfigurer를 상속받는 Configuration 클래스를 생성하고 addInterceptors 메소드를 오버라이딩하고, 원하는 방식으로 구현한다.
@Configuration
public class InterceptorConfiguration implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new SomeInterceptor())
.addPathPatterns("/**") // 적용할 url 패턴
.excludePathPatterns("/some"); // 제외할 url 패턴
}
}
- addPathPatterns: 인터셉터가 적용될 url 패턴
- excludePathPatterns: 인터셉터 적용에서 제외될 url 패턴
728x90
'Spring Framework > Spring Boot' 카테고리의 다른 글
[Spring Boot] AOP(Aspect Oriented Programming) 란? (0) | 2022.04.15 |
---|---|
[Spring Boot] AOP 설정 (0) | 2022.04.15 |
[Spring Boot] Filter 설정 (0) | 2022.04.15 |
[Spring Boot] Filter, Interceptor, AOP (0) | 2022.04.15 |
[Spring Boot] Checked Exception에 Rollback 적용하기 (0) | 2022.04.14 |