SpringBoot Web 应用源码解析:综合实战和整体总结
综合实战
关于 Web 方面的应用源配置比较多,值得庆幸的码解是,Spring Boot 已经帮我们预置初始化了很多基础组件。析综但在实践的合实过程中,某些基础的战和整体总结组件并不能满足我们的实际需求,这时就需要我们重新初始化相应组件,甚至在某些极端的应用源情况下需要完全接管 Spring Boot 的默认配置。
本文将基于对前端模板框架 Thymeleaf 的码解集成,逐步向大家演示如何自定义 ViewResolver以及如何进一步 扩展 Spring MVC 配置。析综本实例涉及集成 Thymeleaf、合实自定义初始化ThymeleafViewResolver 以及扩展 Spring MVC。战和整体总结

Thymeleaf 是应用源一个 Java 类库,能够处理 HTML/HTML5、码解XML、析综JavaScript、合实CSS,战和整体总结 甚至纯文本类型的文件。通常可以用作MVC中的View层,它可以完全替代 JSP。该框架是SpringBoot 首推的前端展示框架。
首先我们创建一个集成 Thymeleaf 的服务器租用 SpringBootWeb 项目。集成 Thymeleaf 的核心操作就是引入对应的 starter,对应项目中 pom.xml 的依赖如下。
<dependency> <groupId>org. springframework. boot</groupId> <artifactId>spring- boot- starter-thymeleaf</ artifactId> < /dependency> <groupId>org. springframework . boot</groupId> <artifactId>spring- boot - starter - web</artifactId> </ dependency>通过前面的学习我们已经得知引入该 starter 之后,Spring Boot 便会进行一个初始化的基本配置,因此针对 Thymeleaf 的最简单集成便完成了,关于页面展示和基础配置我们暂时先不考虑。当集成 Thymeleaf 之后,Thymeleaf 对应的自动配置类 ThymeleafAutoConfiguration 中会初始化一个 ThymeleafViewResolver, 用来对 Thymeleaf 的页面进行解析和渲染。这一操作本质上同默认的 BeanNameViewResolver 作用-样,都实现了 ViewResolver 接口。
此时,如果官方提供的 ThymeleafViewResolver 的默认设 置无法满足我们的需求,可以通过 两 种 途 径 进 行 自 定 义 设 置 : 通 过 application 配 置 文 件 配 置 和 自 行 创 建ThymeleafViewResolver 对象。
通过 application 配置对应的属性定义位于 ThymeleafProperties 类中,我们已经做过多次类似的配置,不再赘述。
我们可以通过以下方式自行创建 ThymeleafViewResolver 对象。免费源码下载先定义一个配置类ViewResolverConfig,并在类内部通过@Bean 注解对实例化的 ThymeleafViewResolver对象进行注入容器的操作。
@Configuration public class ViewResolverConfig { @Bean public ThymeleafViewResolver thymeleafViewResolver() { Thyme leafViewResolver resolver = new ThymeleafViewResolver(); //设置 ViewResolver 对应的属性 值 resolver. setCharacterEncoding("UTF-8"); resolver. setCache(false); return resolver; } }@Bean 默 认 会 将 方 法 thymeleafViewResolver 作 为 Bean 的 key, 将 返 回 的Thymeleaf-ViewResolver 对 象 作 为 Value 存 入 容 器 当 中 。 在 方 法 内 部 , 可 通 过ThymeleafViewResolver 对应的方法进行属性的初始化设置。通过以上代码我们便完成了自定义 Thymeleaf-ViewResolver 的注入。
那么,原来默认的 ThymeleafViewResolver 会怎么处理呢? 我们知道几乎所有的自动配置类都是通过注解设置初始化条件的,比如 ThymeleafViewResolver 默认实例化的条件是当容器中不存在名称为 thymeleafViewResolver 时才会使用默认的初始化。当自定义的ThymeleafViewResolver 类完成初始化之后,默认配置的初始化条件便不再满足了。
上面针对 SpringMVC 中 Thymeleaf 的 ViewResolver 的自定义进行了讲解。
其实在 Spring Boot 中,大多数组件都可以采用同样的站群服务器方式对默认配置进行覆盖。除了上述方法,在 Spring Boot 项目中还可以通过实现 WebMvcConfigurer 接口来进行更灵活地自定义配置。
通过 WebMvcConfigurer 接口实现自定义配置是 Spring 内部的一-种配置方式,它替代了传统的 XML 形式的配置。通过对该接口具体方法的实现,可以自定义一些 Handler、Interceptor 、ViewResolver 、MessageConverter 等参 数 。 以 上 面 配 置ThymeleafViewResolver 为例,我们也可以通过实现该接口的 configureViewResolvers 方法来进行配置,达到同样的效果,具体示例代码如下:
@Configuration public class MyMvcConfig implements WebMvcConfigurer { @Override public void configureViewResolvers (ViewResolverRegistry registry) { Thyme leafViewResolver resolver = new ThymeleafViewResolver(); //设置 ViewResolver 对应的属 性值 resolver. setCharacterEncoding("UTF-8"); resolver . setCache(false); registry . viewResolver(resolver); } }使用 WebMvcConfigurer 接口时需注意 Spring Boot 版本,以上代码是基于 Spring Boot 2.0以后的版本。WebMvcConfigurer 接口还提供 了其他关于扩展 SpringMVC 配置的接口,使用方法与上述示例基本一样,大家可以查阅对应的代码进一步了解, 这里就不再逐一举例了。

最后,关于 SpringMVC 自定义配置的最彻底操作就是完全接管 SpringBoot 关于 SpringMVC的默认配置,具体操作就是在 WebMvcConfigurer 的实现类上使用@EnableWebMvc 注解,示例如下。
@EnableWebMvc
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
使用该注解等于扩展了 WebMvcConfigurationSupport,但是没有重写任何方法,因此所需的功能都需要开发人员自行实现。-般情况下不推荐使用这种方式,该方式更适合基于 SpringBoot 提供的默认配置,针对特别需求进行有针对性拓展的场景。
其实,本节内容的重点并不只是让大家学会简单的 Web 自定义配置,更深的用意是希望大家了解在 Spring Boot 默认自动配置的基础上,我们可以通过什么方式以及如何进行自定义的拓展。本节中提到但未列出实例的内容,大家可以根据已经学习到的思路相应练习。
小结
本文重点针对 Spring Boot 中 Web 应用的自动配置和 Spring MVC 的自动配置展开,并以Spring MVC 中的一些典型配置为例进行了源码讲解。
其 实 围 绕 Web 应 用 还 有 一 系 列 的 自 动 配 置 比 如HttpEncodingAutoConfigurationMultipartAutoConfiguration和HttpMessageConvertersAutoConfiguration 等。我们只需领悟自动配置的精髓:这些相关配置只不过是将之前通过 xml 来配置 Bean,转换成了基于类的形式来配置而已。读者可按照以上方法对其他 Web 相关的配置项进行相应的阅读和分析。

相关文章
scardsvr服务未启动的解决方法(解决scardsvr服务未启动问题的有效措施)
摘要:scardsvr服务是Windows操作系统中用于支持智能卡读取和操作的服务。然而,在某些情况下,用户可能会遇到scardsvr服务未启动的问题,导致无法正常使用智能卡功能。本文将...2025-11-04
windows 7升级Win10后Office 2013文件无法打开的解决方法
在Windows 7系统升级到Win10正式版后,原来的Office 2013创建的文件都无法打开了,包括Word、Excel和PowerPoint。在试图打开这三个类型的文件时,会出现以下提示从英文2025-11-04
windows 7/windows 8.1安装KB3035583补丁出现GWX.exe无法打开怎
Windows 10版本升级推送通知是通过一个编号为KB3035583的补丁来实现的,假如这个补丁未安装或者因为某种原因在电脑中缺失,则无法获取来自Windows update的推送通知,一般遇到这种2025-11-04
在安装一些软件之后,我们的电脑总是会发生一点小变化,不是桌面上多了几个网址图标,就是IE浏览器的默认主页被篡改成乱七八糟的网址。最可气的是,在IE设置中将默认主页改回来后,下次启动Windows 7后2025-11-04探索oppocoloros2.0(从界面设计到个性化定制,发现coloros2.0的无限魅力)
摘要:作为oppo手机的操作系统,coloros2.0带来了全新的视觉体验和个性化定制功能。这篇文章将深入探索coloros2.0的各项特色和功能,为读者展示其无限魅力。标题和...2025-11-04
首先,我们点击“开始菜单”,选择“附件”,打开“系统工具”选项。接下来,我们打开“磁盘清理程序”,然后选择需要清理的磁盘,这里我们点击“C盘”。接下来,我们主要选择一些程序的临时文件,以及软件推荐我们2025-11-04

最新评论