spring boot 配置攔截器
springboot配置攔截器非常簡單,首先新建一個自定義的攔截器類,並實現 HandlerInterceptor接口,重寫三個方法;
public class MyInterceptor implements HandlerInterceptor {
@Autowired
private UserService userService;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
return true;
}
@Override
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
}
}
在webconf類中 配置攔截器並注入:
@EnableWebMvc
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
}
@Bean
public MyInterceptor myInterceptor() {
return new MyInterceptor();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
方式一:
registry.addInterceptor(myInterceptor()).addPathPatterns("/**"); //對來自/**/** 這個鏈接來的請求進行攔截
方式二:
registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**");
}
此時就配置好了。
有個小問題需要注意:
假如想要在自定義的攔截器類裏 調用service層 或者別的層的類方法,如userService 的方法,conf配置裏 需要用方式一:
即把一下這句話中的 new MyInterceptor(), 改成 myInterceptor() 如下:
registry.addInterceptor(myInterceptor()).addPathPatterns("/**");