男儿欲遂平生志,六经勤向窗前读。这篇文章主要讲述SpringBoot | 4.1 SpringMVC的自动配置 #yyds干货盘点#相关的知识,希望能为你提供帮助。
@TOC
前言【SpringBoot | 4.1 SpringMVC的自动配置 #yyds干货盘点#】SpringMVC定位于一个较为松散的组合,展示给用户的视图(View)、控制器返回的数据模型(Model)、定位视图的视图解析器(ViewResolver)和处理适配器(HandlerAdapter)等容器都是独立的。换句话说,通过SpringMVC很容易把后台的数据转换为各种类型的数据,以满足移动互联网数据多样化的要求。
本篇仅为简单介绍SpringMVC的大致组件与流程,详细过程将在后续篇章一一道来。
1. SpringMVC框架的设计与流程1.1 SpringMVC框架的示意图
文章图片
1.2 SpringMVC的组件流程
文章图片
大致流程是:首先是定义请求分发,让SpringMVC能够产生
HandlerMapping
;其次是接收请求获取参数;再次是处理业务逻辑获取数据模型ModelAndView
;最后是绑定视图和数据模型。以上组件将会在后续文章讲解,这里仅做一个大概介绍。
组件名称 | 组件说明 |
---|---|
DispatcherServlet | 核心组件,前端控制器; |
LocalResolver | 国际化解析器; |
ThemeResolver | 主体解析器; |
HandlerMapping | 处理器映射; |
HandlerAdapter | 处理器适配器; |
HandlerExceptionResolver | 处理器异常解析器; |
RequestToViewNameTranslator | 策略视图名称转换器; |
ViewResolver | 视图解析器; |
FalshMapManager | 不常用,FlashMap管理; |
2. *自动配置的源码分析2.1 导入Web场景启动器
<
dependency>
<
groupId>
org.springframework.boot<
/groupId>
<
artifactId>
spring-boot-starter-web<
/artifactId>
<
/dependency>
2.2 找到DispatcherServlet的属性文件前面提到SpringMVC的核心是
DispatcherServlet
前端控制器,因此我们找到它的属性文件DispatcherServlet.properties
:文章图片
它定义的对象在SpringMVC开始时就初始化,并且注册进Spring IoC容器中。此外,在这个jar包内定义了很多SpringMVC相关的组件。
3. 自动配置的官网描述官网地址:7.1.1. Spring MVC Auto-configuration
Spring Boot provides auto-configuration for Spring MVC that works well with most applications.(SpringBoot为SpringMVC提供了自动配置,因此大多场景我们都无需自定义配置)
The auto-configuration adds the following features on top of Spring’s defaults:
(自动化配置包括以下默认特性)
- Inclusion of
ContentNegotiatingViewResolver
andBeanNameViewResolver
beans.
- 内容协商视图解析器和BeanName视图解析器;
- Support for serving static resources, including support for WebJars (covered later in this document)).
- 静态资源(包括webjars);
- Automatic registration of
Converter
,GenericConverter
, andFormatter
beans.
- 自动注册 Converter,GenericConverter,Formatter;
- Support for
HttpMessageConverters
(covered later in this document).
- 支持 HttpMessageConverters(后续文章有内容协商原理分析);
- Automatic registration of
MessageCodesResolver
(covered later in this document).
- 自动注册 MessageCodesResolver (国际化用,少用,一般直接开发两套页面);
- Static
index.html
support.
- 静态index.html 页支持;
- Custom
Favicon
support (covered later in this document).
- 自定义Favicon;
- Automatic use of a
ConfigurableWebBindingInitializer
bean (covered later in this document).
- 自动使用 ConfigurableWebBindingInitializer,(DataBinder负责将请求数据绑定到javaBean上);
文章图片
在SpringBoot中,自定义通过配置类
WebMvcAutoConfiguration
定义的,它有一个静态的内部类WebMVCAutoConfigurationAdapter
,通过它SpringBoot就自动配置了SpringMVC的初始化。4.2 SpringMVC可配置项在
WebMVCAutoConfigurationAdapter
类中,它会读入Spring配置SpringMVC的属此来初始化对应组件,这样便能够在一定程度上实现自定义。可配置项如下:文章图片
除此之外,还可以实现
WebMvcConfigurer
接口加入自己定义的方法。最后::: hljs-center
新人制作,如有错误,欢迎指出,感激不尽!
:::
::: hljs-center
欢迎关注公众号,会分享一些更日常的东西!
:::
::: hljs-center
如需转载,请标注出处!
:::
::: hljs-center
文章图片
:::
推荐阅读
- Apache构建web主机
- 赵渝强使用二进制包部署Kubernetes集群
- #yyds干货盘点#基于CC2530设计的智能风扇
- #yyds干货盘点#three.js源码解读-EventDispatcher
- #yyds干货盘点#Web Components系列 ——自定义组件的生命周期
- #yyds干货盘点#swagger定位问题?式
- Redis列表list字符类型详解#yyds干货盘点#
- Linux 防火墙是什么,你需要它吗( | Linux 中国)
- 「2022」打算跳槽的,必知的 WEB 安全面试题