[Spring] Interceptor (04/17)

박세윤·2023년 4월 17일
0

Spring

목록 보기
4/11
post-thumbnail

📖 Interceptor

📌 Interceptor


✅ Interceptor

  • HandlerInterceptor를 구현한 것 (E또는 HandlerInterceptor Adaptor를 상속한 것)

  • 요청(requests)을 처리하는 과정에서 요청을 가로채서 처리

  • 접근 제어(Auth), 로그(Log) 등 비즈니스 로직과 구분되는 반복적이고 부수적인 로직 처리

  • HandlerInterceptor의 주요 메서드

    • preHandle()
    • postHandle()
    • afterCompletion()



✅ preHandle

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponese response, Object handler) throws Exception {

}
  • Controller(핸들러) 실행 이전에 호출

  • false를 반환하면 요청 종료



✅ postHandle

@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

}
  • Controller(핸들러) 실행 후 호출

  • 정상 실행 후 추가 기능 구현 시 사용

  • Controller에서 예외 발생 시 해당 메서드는 실행되지 않음



✅ afterCompletion

@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

}
  • 뷰가 클라이언트에게 응답을 전송한 뒤 실행

  • Controller에서 예외 발생 시, 네 번째 파라미터로 전달이 된다. (기본은 null)

  • 따라서 Controller에서 발생한 예외 혹은 실행 시간 같은 것들을 기록하는 등 후처리 시 주로 사용



✅ Interceptor 흐름

만약 인터셉터 ABC를 쓴다 치면 만약 각 preHandler, postHandler, afterCompletion에 sysout을 걸어놓는다면, 출력 결과는

ApreHandler
BpreHandler
CpreHandler
CpostHandler
B
A
CafterCompletion
B
A



profile
개발 공부!

0개의 댓글