基於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); }