1、在springboot2.0中加载拦截器是通过继承WebMvcConfigurationSupport来实现
首先springmvc中书写拦截器需要实现HandlerInterceptor接口如下
@Slf4j
@Component
public class AccessTokenInterceptor implements HandlerInterceptor {
@Autowired
private BaseRedisService baseRedisService;
@Autowired
private AppMapper appMapper;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
Object handler)throws Exception {
log.info("拦截器处理真实业务");
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response,
Object handler,ModelAndView modelAndView) throws Exception {
log.info("处理请求完成后视图渲染之前的处理操作");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response,
Object handler, Exception ex)throws Exception {
log.info("视图渲染之后操作");
}
}
接着我们需要把写好的拦截器加载到springboot中,那么我们需要写一个配置类来完成,配置相应的拦截路径 如以下拦截 /openApi/**
@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
//注入拦截器
@Autowired
private AccessTokenInterceptor accessTokenInterceptor;
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
super.addResourceHandlers(registry);
}
@Override
protected void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(accessTokenInterceptor).addPathPatterns("/openApi/**");
super.addInterceptors(registry);
}
/**
* 利用fastjson替换掉jackson,且解决中文乱码问题
* @param converters
*/
@Override
protected void configureMessageConverters(List> converters) {
FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
//处理中文乱码问题
List fastMediaTypes = new ArrayList<>();
fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
fastConverter.setSupportedMediaTypes(fastMediaTypes);
fastConverter.setFastJsonConfig(fastJsonConfig);
converters.add(fastConverter);
}
}
转载至链接:https://my.oschina.net/shxjinchao/blog/1860003