SpringMVC 自动配置
SpringMVC 自动配置
官方文档
文档大纲
SpringBoot 是框架的框架,Web 开发底层仍然是使用 SpringMVC。
Spring Boot 为 Spring MVC 提供了自动配置,在大多数应用程序中都能很好地工作。
自动配置功能在 Spring 默认值的基础上添加了以下特性:
-
自动注册了内容协商视图解析器(
ContentNegotiatingViewResolver
)和 BeanName 视图解析器(BeanNameViewResolver
) -
对提供静态资源的支持,包括对 webjar 的支持 (Core Features)。
-
自动注册
Converter
、GenericConverter
和Formatter
bean。 -
支持
HttpMessageConverters
(Core Features) -
自动注册
MessageCodesResolver
(Core Features)用于国际化,用的不多,实际上如果真的要做国际化,会做两套网站,一套网站针对国内用户,一套网站针对国外用户
-
静态
index.html
的支持。 -
自动使用
ConfigurableWebBindingInitializer
bean(Core Features)DataBinder 负责将请求数据绑定到 JavaBean 上
如果你想保留那些 Spring Boot MVC 的自动配置,并做更多的 MVC 定制 (interceptors 拦截器、formatters 格式化器、view controllers 视图控制器和其他功能),你可以添加你自己的 WebMvcConfigurer
类型的类并添加 @Configuration
,但不要使用 @EnableWebMvc
。
具体请参考《SpringBoot-Web 开发 -11- 定制化原理.md》
如果你想提供 RequestMappingHandlerMapping
, RequestMappingHandlerAdapter
,或 ExceptionHandlerExceptionResolver
的自定义实例,并且仍然保持 Spring Boot MVC 的自动配置,你可以声明一个 WebMvcRegistrations
类型的 bean,并使用它来提供这些组件的自定义实例。
如果你想完全控制 Spring MVC,你可以添加你自己的有 @Configuration
和 @EnableWebMvc
注解的配置类,或者添加你自己的 @Configuration
的 DelegatingWebMvcConfiguration
,就像 @EnableWebMvc
的 Javadoc 中描述的那样。
相当于回到 SpringMVC 时代的方式。参考文档 《SpringMVC- 第十篇:基于注解配置 SpringMVC.md》
具体请参考《SpringBoot-Web 开发 -11- 定制化原理.md》
此文也是我们学习 SpringBoot 开发 WebMVC 的的大纲
SpringMVC 只算是 SpringBoot 在引入 web 场景启动器之后具有的能力。SpringBoot 有很多其他场景的启动器,比如 spring-security,引入这些启动器,SpringBoot 应用就可以具有相应的能力,所以我们说 SpringBoot 是框架的框架。