<aside> 📌 스프링부트에서 Interceptor란?

</aside>

<aside> 📌 interceptor 사용예시 (xml 사용)

</aside>

  1. 먼저, 인터셉터를 설정하는 방법부터 살펴보자. 스프링 설정 파일에서 인터셉터를 설정할 수 있다.
<!-- Interceptors -->
<mvc:interceptors>
    <mvc:interceptor>
        <mvc:mapping path="/**" />
        <bean class="com.victolee.interceptor.MyInterceptor" />
    </mvc:interceptor>
</mvc:interceptors>
  1. 다음으로, 인터셉터를 구현하는 방법을 살펴보자. 인터셉터를 구현하기 위해서는 HandlerInterceptor 인터페이스를 구현하거나 HandlerInterceptorAdapter 클래스를 상속받아야 한다.
public class MyInterceptor implements HandlerInterceptor {

    // controller로 보내기 전에 처리하는 인터셉터
    // 반환이 false라면 controller로 요청을 안함
    // 매개변수 Object는 핸들러 정보를 의미한다. ( RequestMapping , DefaultServletHandler ) 
    @Override
    public boolean preHandle(
        HttpServletRequest request, HttpServletResponse response,
        Object obj) throws Exception {
    
        System.out.println("MyInterCeptor - preHandle");
        return false;
    }

    // controller의 handler가 끝나면 처리됨
    @Override
    public void postHandle(
        HttpServletRequest request, HttpServletResponse response,
        Object obj, ModelAndView mav)
        throws Exception {
    }

    // view까지 처리가 끝난 후에 처리됨
    @Override
    public void afterCompletion(
        HttpServletRequest request, HttpServletResponse response,
        Object obj, Exception e)
        throws Exception {
    }
}
  1. 마지막으로, 로그인 처리를 위한 인터셉터를 구현하는 예제를 살펴보자
public class AuthLoginInterceptor extends HandlerInterceptorAdapter {
    @Autowired
    private UserService userService;
    
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
        Object handler) throws Exception {
    
        String email = request.getParameter("email");
        String pwd = request.getParameter("pwd");
    
        UserVO vo = new UserVO();
        vo.setEmail(email);
        vo.setPwd(pwd);
        userService.getUser(vo);
    
        return false;
    }
}

<aside> 📌 interceptor 사용예시 (@Configuration사용)

</aside>