Spring Boot、Spring MVC、Spring 三者核心区别

Spring Boot、Spring MVC、Spring 三者核心区别

它们代表了Spring生态中三个不同层次和定位的概念,关系是层层递进的。


一、核心定义与定位
项目 核心定位 一句话概括
Spring Framework 基石与核心容器 一个提供IoC(控制反转)容器 和**AOP(面向切面编程)**支持的基础框架,是所有Spring项目的根基。
Spring MVC Web层解决方案 基于Spring Framework构建的一个MVC架构的Web框架,专门用于处理HTTP请求和构建Web应用。
Spring Boot 快速开发与整合工具包 一个基于"约定大于配置"思想,对Spring全家桶(包括Spring MVC)进行封装和自动化配置的快速应用开发脚手架。

二、详细阐述与对比

1. Spring Framework:地基与梁柱

  • 是什么 :它是一个轻量级的、一站式的企业级应用开发框架。

  • 核心价值:

    • IoC/DI容器 :管理所有Java对象(Bean)的创建、组装和生命周期,实现解耦。这是Spring最核心的思想。

    • AOP :将遍布应用的通用功能(如事务、日志、安全)从业务逻辑中分离,实现模块化。

    • 集成能力 :提供了一个强大的粘合层,可以方便地整合MyBatis、Hibernate、Redis、消息队列等各种第三方框架。

  • 一句话:没有Spring Framework,就没有后续的Spring MVC和Spring Boot。

2. Spring MVC:专门处理"门面"的模块

  • 是什么 :Spring Framework中用于开发Web应用程序的模块。

  • 核心价值:

    • 清晰的MVC分层 :通过 DispatcherServlet(前端控制器)将HTTP请求分发给对应的 Controller,处理后将 Model 数据交给 View 渲染,最后返回响应。

    • 灵活的配置:提供了强大的数据绑定、验证、视图解析、国际化等功能。

  • 与Spring的关系 :Spring MVC依赖于Spring Framework的IoC容器来管理其控制器(Controller)和服务层(Service)等Bean。它是Spring在Web领域的一个具体实现。

3. Spring Boot:让一切变简单的"工具箱"

  • 是什么 :一个旨在简化Spring应用初始搭建和开发过程的框架。

  • 核心价值:

    • 自动配置 :"约定大于配置" 。根据项目依赖(如Classpath中的JAR包)自动配置 Spring应用。例如,引入了spring-boot-starter-web,就会自动配置好内嵌Tomcat和Spring MVC。

    • 起步依赖 :通过 Starter 聚合功能依赖,解决了传统的"依赖地狱"问题。只需引入一个Starter,所有相关依赖自动管理。

    • 内嵌容器 :应用可以直接打包成可执行的JAR,内置了Tomcat、Jetty等Servlet容器,无需部署到外部Web服务器。

    • 生产就绪 :提供监控端点(如/actuator/health)、外部化配置等开箱即用的生产级特性。

  • 与Spring/Spring MVC的关系:

    • Spring Boot 并不是一个全新的框架 ,它是在Spring Framework(包括Spring MVC)之上的一层抽象和封装。

    • 使用Spring Boot开发Web应用,你依然在使用Spring MVC,只是省去了大量繁琐的XML或Java配置。


三、演进关系与开发体验对比

关系图谱:

复制代码
Spring Framework (IoC, AOP, 基础)
      ↑
Spring MVC (基于Spring的Web模块)
      ↑
Spring Boot (封装以上二者,提供快速开发体验)

传统Spring vs. Spring Boot 开发体验:

方面 传统 Spring + Spring MVC 项目 Spring Boot 项目
项目创建 手动创建Maven项目,复杂配置。 通过 Spring Initializr 在线生成,或IDE直接创建。
依赖管理 在pom.xml中手动添加众多依赖,需处理版本冲突。 引入预定义好的 Starter (如spring-boot-starter-web)。
配置工作 需要编写大量的applicationContext.xml、spring-mvc.xml等XML文件来配置Bean和MVC。 几乎零配置 。大部分配置已有合理的默认值,可通过application.yml简单覆盖。
部署方式 需要打包成WAR,部署到外部Tomcat等服务器。 打包成可执行JAR ,内嵌容器,通过java -jar命令直接运行。
整合第三方 手动编写Bean配置类或XML来整合MyBatis、Redis等。 引入对应的 Starter(如mybatis-spring-boot-starter),自动配置好大部分Bean。

相关推荐
_Evan_Yao5 小时前
Redis 缓存穿透、击穿、雪崩,一次讲清!
java·spring·mybatis
梓豪csd5 小时前
消息订阅中心:谁该收到哪条通知
java·开发语言·人工智能·低代码·自动化·1024程序员节
秋饼5 小时前
Spring AI 2.1 Message Parts 深度实战:推理签名回放与跨轮记忆持久化的源码级落地
java·ai·技术分享·后端开发
thefool1122666 小时前
TCP 1
java·1024程序员节
金銀銅鐵8 小时前
[Java] 用 GUI 展示 EnumSet 增减元素时的内部变化(下)
java·后端·ai编程
AI人工智能+电脑小能手9 小时前
一次请求打几个下游,这个Java并行任务工具类6个方法按序聚合
java·线程池·并发编程·1024程序员节·批量处理·并行任务
paopaokaka_luck10 小时前
心理咨询管理系统(WebSocket实时沟通、基于用户的协同过滤、 ECharts多维分析、 预约业务流程、预约校验与定时处理)
java·vue.js·spring boot·mysql·spring·echarts·1024程序员节
2301_322414280411 小时前
springboot农产品交易平台的设计与实现08055-计算机毕设 原创(免费领源码+部署教程+开发环境)
java·spring boot·redis·mysql·tomcat·maven·mybatis
考虑考虑12 小时前
JDK26的JEP 500属性
java·后端·java ee
LMT流氓兔12 小时前
第五单元——第十二课:把脚本整理成项目
java·数据库·python·langchain·1024程序员节