溫馨提示×

SpringBoot中的handlerinterceptor怎么使用

小億
148
2023-12-26 19:32:21
欄目: 編程語言

在Spring Boot中使用HandlerInterceptor的步驟如下:

  1. 創(chuàng)建一個類實現(xiàn)HandlerInterceptor接口,并實現(xiàn)其中的方法。例如:
public class MyInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        // 在請求處理之前進行調(diào)用(Controller方法調(diào)用之前)
        return true; // 返回true表示繼續(xù)執(zhí)行后續(xù)的攔截器和Controller方法,返回false表示終止執(zhí)行
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        // 請求處理之后進行調(diào)用,但是在視圖被渲染之前(Controller方法調(diào)用之后)
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        // 整個請求處理完畢后進行調(diào)用,即在視圖渲染完畢或者調(diào)用方已經(jīng)拿到響應(yīng)數(shù)據(jù)之后
    }
}
  1. 在配置類上添加@EnableWebMvc注解,開啟Spring MVC的配置。

  2. 創(chuàng)建一個繼承WebMvcConfigurerAdapter的配置類,并重寫addInterceptors方法。在該方法中添加自定義的攔截器。

@Configuration
@EnableWebMvc
public class WebMvcConfig extends WebMvcConfigurerAdapter {

    @Autowired
    private MyInterceptor myInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(myInterceptor).addPathPatterns("/**"); // 添加攔截路徑
    }
}
  1. 將攔截器注冊到Spring Boot應(yīng)用程序中??梢允褂聾Configuration注解來創(chuàng)建一個配置類,并添加@EnableWebMvc注解來啟用Spring MVC的配置。然后將自定義的攔截器添加到InterceptorRegistry中。
@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Configuration
    @EnableWebMvc
    public static class WebMvcConfig extends WebMvcConfigurerAdapter {

        @Autowired
        private MyInterceptor myInterceptor;

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

這樣就完成了HandlerInterceptor的配置和使用。自定義的攔截器會在請求處理前、請求處理后和整個請求處理完畢后進行調(diào)用??梢栽跀r截器中添加一些自定義的邏輯,例如身份驗證、日志記錄等。

0