Spring Boot 与 Spring MVC 区别

Spring Boot 和 Spring MVC 是 Spring 生态中两个不同层级的组件,‌Spring MVC 是 Spring 框架的 Web 模块,而 Spring Boot 是简化 Spring 应用开发的工具‌。它们的核心区别如下:


1. 定位与功能

特性Spring MVCSpring Boot
核心定位Spring 框架的 ‌Web 开发模块‌(实现 MVC 架构)快速开发工具‌,简化整个 Spring 应用的配置
主要功能处理 HTTP 请求、视图渲染、数据绑定等提供自动配置、内嵌服务器、依赖管理、监控等功能
依赖关系需要手动配置 DispatcherServlet、视图解析器等通过 spring-boot-starter-web自动集成 Spring MVC

2. 配置复杂度

  • Spring MVC
    需要手动配置 XML 或 Java 类(如 web.xml@Configuration 类),例如:

    <!-- 传统 Spring MVC 的 web.xml 配置 --> <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
    通过 ‌自动配置(Auto-Configuration)‌ 简化流程,只需添加依赖即可自动配置 Spring MVC:

    <!-- pom.xml --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>

    无需手动配置 DispatcherServletweb.xml,Spring Boot 自动完成。


3. 依赖管理

  • Spring MVC
    需要手动管理依赖版本(如 Spring Core、Spring Web、Jackson 等),容易引发版本冲突。

  • Spring Boot
    通过 ‌Starter 依赖‌ 统一管理版本,例如:

    • spring-boot-starter-web 自动包含 Spring MVC、Tomcat、Jackson 等依赖;
    • 所有 Starter 的版本由 Spring Boot 父工程统一维护,避免冲突。

4. 内嵌服务器

  • Spring MVC
    需要将应用部署到外部服务器(如 Tomcat、Jetty)。

  • Spring Boot
    默认内嵌 Tomcat/Jetty,可直接打包为 ‌可执行 JAR‌ 运行:

    java -jar myapp.jar


5. 适用场景

场景Spring MVCSpring Boot
Web 层开发✅ 适合需要精细控制 MVC 配置的项目✅ 适合快速构建 Web 应用(如 REST API)
微服务/云原生❌ 需额外配置✅ 内嵌服务器、Actuator 监控、外部化配置
传统企业级应用✅ 结合 Spring 其他模块(如 Security)✅ 简化配置,快速整合其他组件

总结:协作而非替代

  • Spring MVC 是 Spring 的 Web 层实现‌,负责处理请求和响应。
  • Spring Boot 是 Spring 的“脚手架”‌,整合了 Spring MVC 并简化其配置。
    (例如:@SpringBootApplication 注解隐式启用了 Spring MVC 的自动配置)

示例‌:用 Spring Boot 快速启动一个 Spring MVC 应用:

@SpringBootApplication // 包含 @Configuration、@EnableAutoConfiguration、@ComponentScan @RestController public class DemoApp { public static void main(String[] args) { SpringApplication.run(DemoApp.class, args); // 自动启动内嵌 Tomcat } @GetMapping("/hello") public String hello() { return "Hello from Spring Boot + Spring MVC!"; } }

通过 Spring Boot,开发者无需手动配置 DispatcherServlet 或 XML,即可直接运行一个完整的 Spring MVC 应用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值