SpringMVC自動配置
Spring Boot為Spring MVC提供自動配置,適用于大多數(shù)應用程序。
自動配置在Spring的默認值之上添加了以下功能:
- 包含
ContentNegotiatingViewResolver和BeanNameViewResolver組件。 - 支持提供靜態(tài)資源,包括對WebJars的支持。
- 自動注冊
Converter,GenericConverter和Formatter組件。 - 支持
HttpMessageConverters。 - 自動注冊
MessageCodesResolver。 - 靜態(tài)
index.html支持。 - 自定義
Favicon支持。 - 自動使用
ConfigurableWebBindingInitializerbean。
SpringMVC擴展配置
如果您想保留Spring Boot MVC功能并且想要添加其他額外的MVC配置(攔截器,格式化程序,視圖控制器和其他功能),您可以添加自己的@Configuration類型的WebMvcConfigurer配置類,但不要使用 @EnableWebMvc,會讓SpringBoot對Springmvc的所有自動配置都失效。
如果你希望提供
RequestMappingHandlerMapping
RequestMappingHandlerAdapter
ExceptionHandlerExceptionResolver
自定義實例可以聲明WebMvcRegistrationsAdapter實例來提供這些組件。
/**
有一些教程是用的“WebMvcConfigurerAdapter”接口,不過在spring5.0版本后這個類被丟棄
WebMvcConfigurerAdapter ,雖然還可以用,但是看起來不好。
*/
@Configuration
public WebMvcConfg implements WebMvcConfigurer {
/* 攔截器 */
@Override
public void addInterceptors(
InterceptorRegistry registry) {
registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**");
}
/**
視圖控制
以前寫SpringMVC的時候,如果需要訪問一個頁面,必須要寫Controller類,
然后再寫一個方法跳轉(zhuǎn)到頁面,感覺好麻煩,
其實重寫WebMvcConfigurer中的addViewControllers方法即可達到效果了
*/
@Override
public void addViewControllers(
ViewControllerRegistry registry) {
//aaa請求會映射到aaa界面
registry.addViewController("/aaa").setViewName("aaa");
}
/**
比如,我們想自定義靜態(tài)資源映射目錄的話,只需重寫addResourceHandlers方法即可。
注:如果繼承WebMvcConfigurationSupport類實現(xiàn)配置時必須要重寫該方法
*/
@Override
public void addResourceHandlers(
ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**").addResourceLocations("classpath:/");
}
@Override
public void addArgumentResolvers(
List<HandlerMethodArgumentResolver> resolvers) {
}
/* 添加跨域映射 */
@Override
public void addCorsMappings(
CorsRegistry registry) {
}
/* 配置視圖解析器 */
@Override
public void configureViewResolvers(
ViewResolverRegistry registry) {
}
//還有很多方法..
}