프로젝트에서 아무 생각없이 편해보여 인터셉터를 적용했는데
자세히 알고 싶어 정리해보려고 한다 !
💭인터셉터(Interceptor) 란?
- 한국어로 '가로챈다'는 의미 그대로 요청과 응답 처리를 가로채어 전,후에 특정 작업을 수행하는 기능
- 예를 들어 로그인 응답을 가로채어 회원 등급을 확인 후 등급에 맞는 페이지로 이동 시킬 수 있다
✅적용 방법
1.인터셉터(Interceptor) 생성
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class WebInteceptor implements HandlerInterceptor {
private Logger logger = LoggerFactory.getLogger(this.getClass());
@Override
public boolean preHandle( HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
logger.info("preHandle");
return true;
}
@Override
public void postHandle( HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView ) throws Exception {
logger.info("postHandle");
}
@Override
public void afterCompletion( HttpServletRequest request, HttpServletResponse response, Object object, Exception ex ) throws Exception {
logger.info("afterCompletion");
}
}
메소드 | 설명 |
PreHandle | 컨트롤러 실행 전 호출 (false를 반환하면 더 이상 실행 X) |
postHandle | 컨트롤러 실행 후 뷰가 렌더링 되기 전 실행 |
afterCompletion | 컨트롤러 실행 후 뷰가 렌더링 된 후에 실행 |
2.인터셉터(Interceptor) 등록
- 인터셉터를 등록하고 원하는 설정을 추가 및 수정
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new WebInteceptor())
.addPathPatterns("/one") // /one경로는 인터셉터 실행O
.excludePathPatterns("/two"); // /two경로는 인터셉터 실행X
}
}
메소드 | 설명 |
addInterceptors() | 인터셉터 등록 |
addPathPatterns() | 인터셉터가 사용될 경로 지정 /one/** : one으로 시작하는 모든 경로 /one : one과 일치하는 경로 |
excludePathPatterns() | 인터셉터가 사용되지 않을 경로 지정 |
3. 컨트롤러
@Controller
public class WebController {
private Logger logger = LoggerFactory.getLogger(this.getClass());
@GetMapping("/one")
public String one() {
logger.info("11111111111111");
return "/one";
}
@GetMapping("/two")
public String two() {
logger.info("22222222222222");
return "/two";
}
}
4. 실행
✅http://localhost/one 실행 시 -> 인터셉터 실행 O
✅http://localhost/two 실행 시 -> 인터셉터 실행 X
'🌱 Spring' 카테고리의 다른 글
스프링(Spring Framework) 버전 별 특징 (1) | 2023.08.05 |
---|---|
2. SpringBoot에서 카카오 로그인 API 적용하기(DB 저장) (0) | 2023.08.01 |
1. SpringBoot에서 카카오 로그인 API 적용하기(DB 저장) (0) | 2023.07.31 |
@DynamicInsert와 @DynamicUpdate (0) | 2023.07.30 |
@ControllerAdvice로 전역 컨트롤러 만들기 (0) | 2023.07.28 |