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("/**");