基于java-based方式的spring mvc配置,需要创建一个配置类并实现WebMvcConfigurer
接口,WebMvcConfigurerAdapter
抽象类是对WebMvcConfigurer
接口的简单抽象(增加了一些默认实现),所以上面配置代码选择直接继承WebMvcConfigurerAdapter
。然后根据项目的需要实现接口中特定的方法,最后要注意的是,要在配置类上标注@EnableWebMvc
。
到这里可能有人会问,我怎么知道实现哪些方法?具体该怎么配?它们之间的处理流程是怎样的?好的,别急,我们一步步来。
首先第一步,我们需要知道WebMvcConfigurer
接口都提供了哪些回调方法?
WebMvcConfigurer
package org.springframework.web.servlet.config.annotation; /** * 篇幅原因,我们先只介绍Spring mvc常用的一些方法 */ public interface WebMvcConfigurer { void addFormatters(FormatterRegistry registry); void configureMessageConverters(List<HttpMessageConverter<?>> converters); void extendMessageConverters(List<HttpMessageConverter<?>> converters); Validator getValidator(); /* 配置内容裁决的一些选项*/ void configureContentNegotiation(ContentNegotiationConfigurer configurer); void configureAsyncSupport(AsyncSupportConfigurer configurer); /* @since 4.0.3 */ void configurePathMatch(PathMatchConfigurer configurer); /*参数解析*/ void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers); /*返回值解析*/ void addReturnValueHandlers(List<HandlerMethodReturnValueHandler> returnValueHandlers); /*异常处理*/ void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers); void extendHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers); void addInterceptors(InterceptorRegistry registry); MessageCodesResolver getMessageCodesResolver(); void addViewControllers(ViewControllerRegistry registry); /** * 这里配置视图解析器 */ void configureViewResolvers(ViewResolverRegistry registry); /** *静态资源处理 */ void addResourceHandlers(ResourceHandlerRegistry registry); void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer); void addCorsMappings(CorsRegistry registry); }