在Spring Boot中使用HandlerInterceptor的步驟如下:
public class MyInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 在請求處理之前進行調用(Controller方法調用之前)
return true; // 返回true表示繼續執行后續的攔截器和Controller方法,返回false表示終止執行
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
// 請求處理之后進行調用,但是在視圖被渲染之前(Controller方法調用之后)
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
// 整個請求處理完畢后進行調用,即在視圖渲染完畢或者調用方已經拿到響應數據之后
}
}
在配置類上添加@EnableWebMvc注解,開啟Spring MVC的配置。
創建一個繼承WebMvcConfigurerAdapter的配置類,并重寫addInterceptors方法。在該方法中添加自定義的攔截器。
@Configuration
@EnableWebMvc
public class WebMvcConfig extends WebMvcConfigurerAdapter {
@Autowired
private MyInterceptor myInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(myInterceptor).addPathPatterns("/**"); // 添加攔截路徑
}
}
@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的配置和使用。自定義的攔截器會在請求處理前、請求處理后和整個請求處理完畢后進行調用。可以在攔截器中添加一些自定義的邏輯,例如身份驗證、日志記錄等。