728x90
반응형
Date: 2021년 12월 8일
Status: Completed
Task: Develop
Spring MVC Request LIFE CYCLE
Interceptor
- 언제 사용하나?
- 특정 EndPoint에 로그인 된 사용자가 접근 시
- 특정 EndPoint에 접근 시 권한에 따라 접근 처리를 다르게 줄 때
- 등등
- 목적
- 특정 URL 진입 시 어떤 작업을 수행해야 할 때
- Tech
- Servlet Filter, Interceptor, AOP 등등이 있음
Interceptor와 ServletFilter의 차이점
- Servlet Filter
- Dispatcher Servlet의 앞단에 들어오는 요청을 처리
- J2EE의 표준 스펙의 정의됨
- Dispatcher Servlet 전에 호출이 되므로 Spring 프레임워크오 무관한 것을 처리가능
- Interceptor
- Dispatcher Servlet 뒤의 Handler 영역에서 요청 처리
- Spring 프레임워크에서 자체적으로 제공하는 기능임
- Spring Bean을 사용할 수 있음
- 사용예제
- Servlet Filter를 사용하는 경우
- 문자열 인코딩
- Interceptor를 사용하는 경우
- 클라이언트 요청과 관련 있는 처리
- Servlet Filter를 사용하는 경우
FLOW
- Request → Servlet Filter → Dispatcher Servlet → Interceptor → Contorller
구현
- HandlerInterceptorAdapter 를 상속받는 방법
- Spring 5.3v 이상에서는 Deprecated 처리됨
- HandlerInterceptor를 상속받는 방법
- Spring Boot 2.3x to 2.5x 는 Spring 5.3v 이상이기 때문에 HandlerInterceptor를 상속받자
- 아래 3가지 Method를 오버라이딩 해야함
- preHandle: 컨트롤러 실행 전에 수행
- postHandle: 컨트롤러 실행 후 결과를 뷰로 보내기 전에 수행
- afterCompletion: 뷰의 작업까지 완료된 후 수행
Interceptor 등록하기
WebMvcConfigure의 구현체인 클래스에 다음과 같이 Interceptor 등록
@Configuration public class ConnectionConfigure implements WebMvcConfigurer { @Autowired ConnectInterceptor connectInterceptor; @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(connectInterceptor); } }
728x90
반응형
'Frame Work > Spring Boot' 카테고리의 다른 글
[JWT] SpringBoot에서 JWT 발급과 검증처리 (0) | 2021.12.08 |
---|---|
[JPA] JpaRepository를 통해 Pagination 처리하기 (0) | 2021.12.07 |
[Spring Boot] Getter, Setter (0) | 2021.06.20 |
[Spring Boot] 시작하기 (0) | 2021.06.20 |