有什么用

  1. WebMvcConfigurerAdapter是Springboot的一个配置类,不仅仅解决了资源拦截、各种拦截器,还解决了跨域、视图解析、信息拦截、指定页面跳转等问题。
  2. 这个类在Spring 5中已经不建议使用。

常用方法

  1. public abstract class WebMvcConfigurerAdapter implements WebMvcConfigurer {
  2. /** 配置路径匹配参数 */
  3. @Override
  4. public void configurePathMatch(PathMatchConfigurer configurer) {}
  5. /** 配置内容裁决的一些选项 */
  6. @Override
  7. public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {}
  8. /** 使得springmvc在接口层支持异步 */
  9. @Override
  10. public void configureAsyncSupport(AsyncSupportConfigurer configurer) {}
  11. /** 默认静态资源处理器 */
  12. @Override
  13. public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {}
  14. /** 注册参数转换和格式化器 */
  15. @Override
  16. public void addFormatters(FormatterRegistry registry) {}
  17. /** 添加拦截器 */
  18. @Override
  19. public void addInterceptors(InterceptorRegistry registry) {}
  20. /**静态资源处理 */
  21. @Override
  22. public void addResourceHandlers(ResourceHandlerRegistry registry) {}
  23. /** 解决跨域问题 */
  24. @Override
  25. public void addCorsMappings(CorsRegistry registry) {}
  26. /** 视图跳转控制器 */
  27. @Override
  28. public void addViewControllers(ViewControllerRegistry registry) {}
  29. /** 配置视图解析器 */
  30. @Override
  31. public void configureViewResolvers(ViewResolverRegistry registry) {}
  32. /** 注册自定义控制器(controller)方法参数类型 */
  33. @Override
  34. public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {}
  35. /** 注册自定义控制器(controller)方法返回类型 */
  36. @Override
  37. public void addReturnValueHandlers(List<HandlerMethodReturnValueHandler> returnValueHandlers) {}
  38. /** 信息转换器*/
  39. @Override
  40. public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {}
  41. /** 仅添加一个自定义的HttpMessageConverter,不覆盖默认注册的HttpMessageConverter */
  42. @Override
  43. public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {}
  44. /** 注册异常处理 */
  45. @Override
  46. public void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers) {}
  47. /** 多个异常处理,可以重写次方法指定处理顺序等 */
  48. @Override
  49. public void extendHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers) {}
  50. @Override
  51. public Validator getValidator() {
  52. return null;
  53. }
  54. @Override
  55. public MessageCodesResolver getMessageCodesResolver() {
  56. return null;
  57. }
  58. }

实际使用

  1. @Configuration
  2. public class SpringConfig extends WebMvcConfigurerAdapter {
  3. @Autowired
  4. private UserInterceptor userInterceptor;
  5. @Override
  6. public void addInterceptors(InterceptorRegistry registry) {
  7. registry.addInterceptor(userInterceptor);
  8. }
  9. @Override
  10. public void addResourceHandlers(ResourceHandlerRegistry registry) {
  11. //将所有/static/** 访问都映射到classpath:/static/ 目录下
  12. registry.addResourceHandler("/index.html").addResourceLocations("classpath:/static/index.html");
  13. registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/static/");
  14. }
  15. @Override
  16. public void addViewControllers(ViewControllerRegistry registry) {
  17. registry.addViewController("/login").setViewName("/");
  18. }
  19. }

Spring5 中MVC配置文件

在文章的开头讲到在Spring5中已经不推荐使用WebMvcConfigurerAdapter,那么要如何实现MVC配置呢?答案很简单,就是通过创建一个实现了WebMvcConfigure接口的类来完成拦截器、静态资源处理、页面跳转、跨域等功能。相对于上述的实现方式,Spring 5中减少了WebMvcConfigurerAdapter类的开销。

参考地址:
链接:https://www.jianshu.com/p/c58b81e87887