有什么用
- WebMvcConfigurerAdapter是Springboot的一个配置类,不仅仅解决了资源拦截、各种拦截器,还解决了跨域、视图解析、信息拦截、指定页面跳转等问题。
- 这个类在Spring 5中已经不建议使用。
常用方法
public abstract class WebMvcConfigurerAdapter implements WebMvcConfigurer {/** 配置路径匹配参数 */@Overridepublic void configurePathMatch(PathMatchConfigurer configurer) {}/** 配置内容裁决的一些选项 */@Overridepublic void configureContentNegotiation(ContentNegotiationConfigurer configurer) {}/** 使得springmvc在接口层支持异步 */@Overridepublic void configureAsyncSupport(AsyncSupportConfigurer configurer) {}/** 默认静态资源处理器 */@Overridepublic void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {}/** 注册参数转换和格式化器 */@Overridepublic void addFormatters(FormatterRegistry registry) {}/** 添加拦截器 */@Overridepublic void addInterceptors(InterceptorRegistry registry) {}/**静态资源处理 */@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {}/** 解决跨域问题 */@Overridepublic void addCorsMappings(CorsRegistry registry) {}/** 视图跳转控制器 */@Overridepublic void addViewControllers(ViewControllerRegistry registry) {}/** 配置视图解析器 */@Overridepublic void configureViewResolvers(ViewResolverRegistry registry) {}/** 注册自定义控制器(controller)方法参数类型 */@Overridepublic void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {}/** 注册自定义控制器(controller)方法返回类型 */@Overridepublic void addReturnValueHandlers(List<HandlerMethodReturnValueHandler> returnValueHandlers) {}/** 信息转换器*/@Overridepublic void configureMessageConverters(List<HttpMessageConverter<?>> converters) {}/** 仅添加一个自定义的HttpMessageConverter,不覆盖默认注册的HttpMessageConverter */@Overridepublic void extendMessageConverters(List<HttpMessageConverter<?>> converters) {}/** 注册异常处理 */@Overridepublic void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers) {}/** 多个异常处理,可以重写次方法指定处理顺序等 */@Overridepublic void extendHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers) {}@Overridepublic Validator getValidator() {return null;}@Overridepublic MessageCodesResolver getMessageCodesResolver() {return null;}}
实际使用
@Configurationpublic class SpringConfig extends WebMvcConfigurerAdapter {@Autowiredprivate UserInterceptor userInterceptor;@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(userInterceptor);}@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {//将所有/static/** 访问都映射到classpath:/static/ 目录下registry.addResourceHandler("/index.html").addResourceLocations("classpath:/static/index.html");registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/static/");}@Overridepublic void addViewControllers(ViewControllerRegistry registry) {registry.addViewController("/login").setViewName("/");}}
Spring5 中MVC配置文件
在文章的开头讲到在Spring5中已经不推荐使用WebMvcConfigurerAdapter,那么要如何实现MVC配置呢?答案很简单,就是通过创建一个实现了WebMvcConfigure接口的类来完成拦截器、静态资源处理、页面跳转、跨域等功能。相对于上述的实现方式,Spring 5中减少了WebMvcConfigurerAdapter类的开销。
