1. 程式人生 > 實用技巧 >Spring Boot 建立並註冊 攔截器Interceptor

Spring Boot 建立並註冊 攔截器Interceptor

在Spring的HTTP請求處理鏈上,攔截器是過濾器鏈之後的元件

使用一個攔截器的過程分為建立攔截器實現類和註冊攔截器

建立攔截器實現類

@Slf4j
public class AppInterceptor implements HandlerInterceptor {
    /**
     * 請求進入過濾起之後,進入處理之前
     * @param request
     * @param response
     * @param handler
     * @return
     * @throws Exception
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        log.info("攔截 preHandle");
        return true;
    }

    /**
     * 請求處理完成之後,檢視層渲染之前
     * @param request
     * @param response
     * @param handler
     * @param modelAndView
     * @throws Exception
     */
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        log.info("攔截 postHandle");
    }

    /**
     * 檢視渲染完成之後
     * @param request
     * @param response
     * @param handler
     * @param ex
     * @throws Exception
     */
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        log.info("攔截 afterCompletion");
    }
}

建立配置類並註冊攔截器

@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new AppInterceptor()).addPathPatterns("/**");
    }
}

訪問測試介面GET /可以發現控制檯輸出三條日誌

攔截 preHandle
攔截 postHandle
攔截 afterCompletion