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.xmlspring-mvc.xml等XML文件来配置Bean和MVC。 几乎零配置 。大部分配置已有合理的默认值,可通过application.yml简单覆盖。
部署方式 需要打包成WAR,部署到外部Tomcat等服务器。 打包成可执行JAR ,内嵌容器,通过java -jar命令直接运行。
整合第三方 手动编写Bean配置类或XML来整合MyBatis、Redis等。 引入对应的 Starter(如mybatis-spring-boot-starter),自动配置好大部分Bean。

相关推荐
222you4 小时前
SpringIOC的注解开发
java·开发语言
god004 小时前
Selenium等待判断元素页面加载完成
java·开发语言
CoderYanger5 小时前
贪心算法:3.最大数
java·算法·leetcode·贪心算法·1024程序员节
爱学习的小可爱卢5 小时前
JavaEE进阶——MyBatis-Plus新手完全攻略
java·mybatis-plus
码界奇点5 小时前
Java Web学习 第15篇jQuery万字长文详解从入门到实战解锁前端交互新境界
java·前端·学习·jquery
CoderYanger5 小时前
贪心算法:5.最长递增子序列
java·算法·leetcode·贪心算法·1024程序员节
沉迷技术逻辑5 小时前
Docker部署与常用命令
java·docker·eureka
听风吟丶5 小时前
Java HashMap 深度解析:从底层结构到性能优化实战
java·开发语言·性能优化
KakiNakajima5 小时前
浅谈幂等性基本实现原理【kaki备忘录】
java