新闻详情

新闻详情

首页 / 资讯中心 / 详情

SpringBoot-1-2-MVC 的配置工作环境

发布时间:2026/9/4 7:39:00来源:尧图网络
SpringBoot-1-2-MVC 的配置工作环境
引言上篇文章我们建立了springboot的基本认知通过“自动配置”和“起步依赖”来简化Spring应用的搭建。本篇我们一起来理解Web开发中最核心的模块Spring MVC深入理解为什么我们几乎不需要任何配置就能够在SpringBoot中运行一个完整的Web应用。1.依赖在传统的Spring MVC项目中我们需显式引入spring-webmvc\servlet-api 等多个坐标且需谨慎处理各版本间的兼容性稍有不慎便会引发依赖冲突。而在Spring Boot中只需引入一个起步依赖dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency引入之后就直接具备完整的Web开发能力。spring-boot-starter-web本身不是一个具体的库他是一个依赖集合代表或者说替换上面的多种依赖其内部声明了一组经过相关测试和版本相互兼容的依赖具有Web开发的全部基础组件。其中包括SpringMVC框架、嵌入式tomcat、Jackson、其他相关参数检验、静态资源处理等a.spring-boot-starter-web大致模块spring-boot-starter-web ├── Spring MVC │ ├── spring-web │ └── spring-webmvc ├── Embedded Tomcat │ └── spring-boot-starter-tomcat ├── Jackson │ ├── jackson-databind │ ├── jackson-core │ └── jackson-annotations └── 其他 Web 相关依赖 ├── spring-boot-starter核心启动器 ├── spring-boot-starter-json包含 Jackson ├── spring-boot-starter-validation可选但常用 └── 其他其中spring-web提供基础的Web功能。spring-webmvc实现完整的SpringMvc框架包括Controller、DispatcherServlet、视图解析等。spring-boot-starter-tomcat引入Tomcat的内嵌版本使得Web应用可以作为一个独立的java进程运行。Jackson:当前流行的JSON处理库SpringBoot默认使用它来处理HTTP请求和相应中的JSON数据。无论是接收JSON还是发送JSONJackson都会进行相关的序列化和反序列化。注spring-boot-starter-web是一个精心设计的组合依赖我们只需引入它即可获得一套完整的、版本兼容的 Web 开发环境无需再为底层依赖的版本选择耗费精力。2.SpringBoot整合SpringMVC学习SpringBoot记住核心思想默认你不写我就默认。很多东西没有手动配置SpringBoot会根据当前项目依赖和环境完成默认配置。先说答案答案就是自动配置SpringBoot启动的时候会扫描类路径下的各种条件发现依赖就自动应用相应的配置。其中SpringMVC核心的自动配置类webMvcAutoConfiguration,该类会根据当前项目环境自动配置一下相关内容注册一个前端控制器DispatcherServlet配置RequestMappingHandlerMapping和RequestMappingHandlerAdapter配置消息转换器包括JSON转换器Jackson配置静态资源处理、异常机制处理、视图解析等等。注我们目前只需要记住SpringBoot通过自动配置为SpringMVC提供了开箱即用的默认行为。a.SpringMVC默认配置当我们使用SpringBoot整合SpringMVC的时候SpringBoot会根据当前项目环境为SpeingMVC提供默认环境。也就是上面你不写我就默认配置按照默认规则帮你配置。它提供了哪些默认配置呢除了上面提到的注册一个前端控制器DispatcherServlet·······等还使用了如下配置。1.默认使用嵌入式tomcat这就意味我们并不需要单独下载安装一个tomcat服务器然后打包放到外部服务器上了。同时Tomcat服务器作为一个普通的java库打包进我的应用JAR文件中当运行JAR包的时候SpringBoot会启动内嵌的Tomcat服务器然后将SpringMVC部署到这个容器中。相关好处无需外部部署容器、环境一致性每个应用自带相同版本的Tomcat、微服务友好每个微服务独立运行2.默认端口SpringBoot默认的Web服务器端口是8080启动后直接可以通过http://localhost:8080127.0.0.1:8080访问。如果需要修改端口需要添加或修改配置文件可能叫application.properties或是application.yml在propertiesserver.port8081在yml中server: port: 8081然后重启应用更换端口后就可以访问了。除了上面介绍的配置之外SpringBoot 还提供了大量其他配置项。除了使用配置文件进行配置之外SpringBoot 也支持通过Java 配置类对项目进行配置。例如最常见的配置配置DispatcherServlet的映射路径。默认是/如果设置/Long,则表示所有请求都需要以/Long开头才能被MVC处理。注servlet*-配置Tomcat/Web Servlet本身spring.mvc*-配置SpringMVC框架分类可以帮我们快速定位哪里出现错误。3.MVC配置的相关入口在SpringBoot中负责MVC自动配置的类是WebMvcAutoConfiguration。一般步骤是Spring Boot ↓ WebMvcAutoConfiguration ↓ Spring MVC 自动配置默认情况下SpringBoot会加载WebMvcAutoConfiguration需要满足以下条件- 类路径下存在DispatcherServlet和Servlet类引入依赖spring-webmvc。- 应用是Web应用。- 没有自定义WebMvcConfigurationSupport类型的Bean解释如下图。满足以上条件SpringBoot就会使用默认配置。WebMvcConfigurationSupport ↑ │ 继承 │ DelegatingWebMvcConfiguration (由 EnableWebMvc 导入)父类WebMvcConfigurationSupport是SpringMVC的基础配置类。子类DelegatingWebMvcConfiguration专门收集并调用所有WebMvcConfigurer实现。原因在WebMvcAutoConfiguration大多数方法都标注了条件注解如ConditionalOnMissingBean(WebMvcConfigurationSupport.class)表示如果容器中存在WebMvcConfigurationSupport的Bean则对应的自动配置逻辑将不会执行。而如果在自定义的配置类上加入注解EnableWebMvc,其中EnableWebMvc定义如下Import(DelegatingWebMvcConfiguration.class) public interface EnableWebMvc {}他导入了DelegatingWebMvcConfiguration而且DelegatingWebMvcConfiguration继承WebMvcConfigurationSupport。综上如果我们的配置类加上EnableWebMvcSpring容器中就会存在一个WebMvcConfigurationSupport的Bean所以SpringBoot中对应的自动配置逻辑就不会执行。最终执行结果SpringBoot的默认MVC自动配置全部退让你的配置类完全控制配置没有配置的部分不会自动补齐。如何完全接管自动配置类- 继承WebMvcConfigurationSupport重写方法。- 实现WebMvcConfigurer接口(定制接口实现个性化配置)EnableWebMvc。合并配置不使用EnableWebMvc注解而是实现WebMvcConfigurer只需要自定义类实现该类后就可以自定义配置了只需要重写对应的方法配置对于没有重写的配置则使用默认配置。总结通过本文分析可知spring-boot-starter-web起步依赖结合WebMvcAutoConfiguration自动配置类是 Spring Boot 简化 Web 开发的基石。我们不仅了解了它默认集成了 Tomcat、Jackson 和 Spring MVC 核心组件更深入剖析了EnableWebMvc与 WebMvcConfigurer在自定义配置时的本质区别。掌握了这些底层逻辑你就能在遇到配置失效时快速定位问题。接下来我们将基于这套已配置好的 MVC 环境探讨日常开发中绕不开的请求参数校验Validation与全局异常处理。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

紫外消毒机品牌这么多,技术差别在哪?一文讲清楚 2026/9/4 8:30:08

紫外消毒机品牌这么多,技术差别在哪?一文讲清楚

关键词:紫外消毒机,紫外线消毒机品牌,UV消毒机,222nm紫外线,紫外线空气消毒机一、紫外消毒机是最"老"的空气消毒技术,但远没有过时 紫外线用于消毒已经有上百年历史了。从最早的水处理消毒,到后来的空气消毒、表面消毒,…

阅读更多 →
CNN图像风格迁移毕业设计核心实现与量化验证 2026/9/4 8:30:08

CNN图像风格迁移毕业设计核心实现与量化验证

简介:本资源是一套完整可用的基于CNN卷积神经网络的图像风格迁移毕业设计实现方案,面向计算机、人工智能及相关专业本科生,专为毕设开题、中期与答辩阶段提供可运行代码与配套文档支撑。项目采用PyTorch框架实现经典神经风格迁移(…

阅读更多 →
养老院、医院、学校选择空气消毒机 跨场景选型对比指南 2026/9/4 8:30:08

养老院、医院、学校选择空气消毒机 跨场景选型对比指南

关键词:养老院医院学校消毒机,空气消毒机推荐,多场景消毒机选型,通用消毒机怎么选,消毒机场景对比一、为什么把这三个场景放在一起说 养老院、医院、学校——看起来是完全不同的场景,但在空气消毒这件事上,它们的底层需求其实高度相似&#x…

阅读更多 →
图像金字塔 2026/9/4 8:30:08

图像金字塔

什么是图像金字塔?——同一张图片不同分辨率的子图的合集。Level 0 原图640480|↓Level 1533400|↓Level 2444333|↓Level 3370277...构造图像金字塔的目的?在 ORB-SLAM2 中,构造图像金字塔(Image Pyramid)的核心目的…

阅读更多 →
Spring Boot教学课程模块实战:从表结构设计到前后端联动 2026/9/4 8:30:08

Spring Boot教学课程模块实战:从表结构设计到前后端联动

不管是在线教育平台、企业内部培训系统,还是学校的信息化教务系统,“教学课程”往往是最核心也最容易越做越乱的一部分。很多项目初期只记录课程名称和讲师,随着课程数量增加,又要补章、补目录、补关联资料,最后表结构…

阅读更多 →
OpenCut开源视频编辑器Windows部署教程 Next.js TypeScript源码构建详解 2026/9/4 8:27:08

OpenCut开源视频编辑器Windows部署教程 Next.js TypeScript源码构建详解

GitHub 64k Star:OpenCut 从零部署完整教程 新手照着做就能跑起来 效率工具指南 原创教程摘要:OpenCut(opencut-classic)是GitHub 64k Star的开源视频编辑器,本文记录在Windows 10环境下从源码克隆到生产部署的完整…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞