Spring学习笔记04:spring mvc和Spring Boot之间是什么关系?

Spring MVC 是什么?

想象你开了一家餐厅,顾客(用户)点菜、服务员传话、厨师做菜、最后服务员上菜。Spring MVC 就是规定这套流程的"餐厅管理规则",专门用于处理网页请求(HTTP)和响应。

核心角色
  1. Model(厨师):处理数据(比如查数据库、计算逻辑)。
  2. View(摆盘):展示结果(比如 HTML 网页、JSON 数据)。
  3. Controller(服务员):接收用户请求,协调 Model 和 View。
工作流程
  1. 用户访问 /order 页面(点菜)。
  2. Controller 接收请求,调用 Model 处理(让厨师做菜)。
  3. Model 返回数据,Controller 交给 View 展示(服务员端菜上桌)。

Spring Boot 是什么?

Spring Boot 是 Spring 的"快速开店工具包" ,它的目标是:让你用最少的配置,快速启动一个 Spring 应用(餐厅)

Spring Boot 的魔法
  1. 自动配置:默认帮你配好 Spring MVC、数据库连接等基础设置(比如自动摆放桌椅、厨房设备)。
  2. 内嵌服务器:不用自己装 Tomcat,直接打包成可执行的 JAR 文件(餐厅自带厨房和厨师)。
  3. 起步依赖 :一句话引入常用功能(比如 spring-boot-starter-web 包含 Spring MVC + Tomcat)。

Spring MVC 和 Spring Boot 的关系

1. Spring Boot 简化了 Spring MVC 的使用
  • 传统 Spring MVC:你需要手动配置一堆 XML 或 Java 代码(比如配 DispatcherServlet、视图解析器)。
  • Spring Boot + Spring MVC :只要添加 spring-boot-starter-web 依赖,Spring Boot 自动配置好 Spring MVC,你只需写业务代码。
2. 代码对比
  • 传统 Spring MVC 的配置:

    xml 复制代码
    <!-- 手动配置 DispatcherServlet -->
    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/spring-mvc.xml</param-value>
        </init-param>
    </servlet>
  • Spring Boot 中 :无需配置,直接写 Controller:

    java 复制代码
    @RestController
    public class HelloController {
        @GetMapping("/hello")
        public String hello() {
            return "Hello, Spring Boot!"; // 自动处理请求和响应
        }
    }
3. 项目依赖关系
  • Spring Boot 像一个"大礼包",内部已经整合了 Spring MVC 和其他常用模块(如 Spring Data、Spring Security)。
  • 当你用 Spring Boot 开发 Web 应用时,Spring MVC 是它的核心组件之一

总结

  • Spring MVC:是处理 Web 请求和响应的具体规则(像餐厅的服务流程)。
  • Spring Boot :是快速开店的工具包,内置了 Spring MVC 并帮你自动配置好一切。
  • 关系:Spring Boot 让 Spring MVC 的使用变得极其简单,就像"一键开店"!

类比总结

概念 比喻 核心作用
Spring MVC 餐厅服务流程(点菜-做菜-上菜) 处理 HTTP 请求和响应
Spring Boot 快速开店工具包 自动配置 Spring MVC 和其他基础设施

初学只需记住:用 Spring Boot 写 Web 应用,本质就是在用 Spring MVC,但不用操心配置! 🚀

相关推荐
GlueNa2SiO35 小时前
03-Flask模板引擎Jinja2详解
笔记·python·flask
Capricorn19887 小时前
解决全网抄 Karpathy 导致的 LLM Wiki 污染?基于知芽 Notebook Skill 的 raw/ 笔记法排障指南
大数据·论文阅读·人工智能·笔记·论文笔记
壹玖玖肆7 小时前
openGauss使用笔记
笔记
宵时待雨7 小时前
linux笔记归纳17:传输层协议UDP
linux·笔记·udp
卓怡学长8 小时前
w176基于SpringBoot的医院管理系统
java·spring boot·spring·maven·intellij-idea
大模型码小白8 小时前
Spring AI Tool 实现自然语言操作 MySQL 数据库详解
服务器·开发语言·数据库·人工智能·python·mysql·spring
吴声子夜歌8 小时前
Java面试——Spring原理及应用(一)
java·spring·面试
噜~噜~噜~9 小时前
操作系统笔记-2.3.2.1 进程互斥的软件实现方法
笔记·操作系统
小弥儿9 小时前
GitHub今日热榜 | 2026-08-26:AI 大脑与知识管理扎堆
人工智能·学习·开源·github
荷蒲9 小时前
【小白量化Qbuddy】利用AI学习中文Python
人工智能·python·学习