本博文为系列文章建议大家从头阅读
- WebMvcConfigurer
这里推荐大家使用实现WebMvcConfigurer接口的方式使用相关webmvc特性 - 拦截器
我们在这里演示一个打印controller方法执行时间的功能
@Configuration
public class MyWebMvcConfigure implements WebMvcConfigurer {
private long start;
/**
* 拦截器
* @param registry
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new HandlerInterceptor() {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
start = System.currentTimeMillis();
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
long end = System.currentTimeMillis();
System.out.println("服务器耗时:" + (end - start) + "ms");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}).addPathPatterns("/user/*");
}
}
- 日期解析器
public void addFormatters(FormatterRegistry registry) {
registry.addFormatter(new DateFormatter("yyyy-MM-dd HH:mm:ss"));
}
- cors跨域
这里的功能相当于对/open/api/**下的接口设置跨域访问权限,允许http://xx.com域名以get或post方式访问这些接口
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/open/api/**")
.allowedOrigins("http://xx.com")
.allowedMethods("POST", "GET");
}
- 全局异常解析
这里模拟的返回json数据的异常处理器,也可以重定向到错误页面,大家可以自己试一下
//全局异常解析
public void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> resolvers) {
resolvers.add(new HandlerExceptionResolver() {
@Override
public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
ModelAndView mv = new ModelAndView();
MappingJackson2JsonView view = new MappingJackson2JsonView();
mv.setView(view);
if (e instanceof NumberFormatException) {
mv.addObject("status", "500");
mv.addObject("message", "NumberFormatException");
return mv;
}
mv.addObject("status", "500");
mv.addObject("message", "系统错误");
return mv;
}
});
}
当然WebMvcConfigurer还有一些其它功能,一般用的不多大家可以自己研究一下