外观
Spring Boot 4 概览与迁移指南
约 1121 字大约 4 分钟
Spring Boot 4Java迁移指南
次阅读
2026-04-09
Spring Boot 4 是什么
Spring Boot 4.0 于 2025 年 11 月 20 日 正式发布,当前最新版本为 4.0.5。这不是一次简单迭代,而是一次架构层面的重大重构——底层基于 Spring Framework 7.0,整个 Spring 生态同步大版本升级。
核心主题:模块化拆分 + Jackson 3 迁移 + 云原生深化 + 性能飞跃。
基线要求对比
从 Spring Boot 3.x 升级到 4.x,最低基线全面抬升:
| 技术指标 | Spring Boot 3.0 | Spring Boot 4.0 |
|---|---|---|
| 最低 Java 版本 | Java 17 | Java 17(推荐 Java 21+ 以启用虚拟线程等全部特性) |
| 兼容 Java 版本 | 最高 Java 21 | 最高 Java 26 |
| Spring Framework | 6.0.x | 7.0.x |
| Jakarta EE | 9(兼容 10) | 11 |
| Servlet 规范 | 6.0 | 6.1 |
| Kotlin 基线 | 1.7+ | 2.2+ |
| GraalVM | 原生镜像(实验) | GraalVM 25+(生产级) |
| 内嵌 Web 容器 | Tomcat 10, Jetty 11, Undertow 2.0 | Tomcat 11.0.x, Jetty 12.1.x(Undertow 已移除) |
| Maven | 3.5+ | 3.6.3+ |
| Gradle | 7.0+ | 8.14+ 或 9.x |
| JPA 规范 | 3.0 | 3.2 |
| Bean Validation | 3.0 | 3.1 |
模块化重构
Spring Boot 4 最大的架构变化——将原来庞大的 spring-boot-autoconfigure 拆分为多个专注单一功能的小模块。
拆分前(Spring Boot 3.x)
所有自动配置打包在一个大模块里:
spring-boot-autoconfigure(~2MB,包含所有技术的自动配置)拆分后(Spring Boot 4.x)
每个技术都有独立模块,命名规范为 spring-boot-<technology>,包名为 org.springframework.boot.<technology>:
spring-boot-jackson # Jackson JSON 处理
spring-boot-data-redis # Redis 集成
spring-boot-security # Spring Security
spring-boot-web # Web 相关
spring-boot-actuator # 监控端点
...好处:原生镜像编译更高效(不需要的模块不会打进镜像),依赖更清晰。
Starter 体系重组
新的 Starter 命名
每个技术都有独立的 starter 和配套的 test starter:
<!-- 主 starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- 对应的测试 starter(已传递依赖 spring-boot-starter-test,无需重复声明) -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis-test</artifactId>
<scope>test</scope>
</dependency>原来只需要第三方依赖的技术(如 Flyway、Liquibase)现在也有了专属 starter。
Starter 重命名
| 旧名称(Spring Boot 3.x) | 新名称(Spring Boot 4.x) | 说明 |
|---|---|---|
spring-boot-starter-web | spring-boot-starter-webmvc | 旧名保留为 deprecated |
spring-boot-starter-aop | spring-boot-starter-aspectj | - |
Classic Starter 过渡方案
提供 spring-boot-starter-classic 作为迁移过渡:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-classic</artifactId>
</dependency>包含所有模块但不带来传递依赖,让旧项目能先跑起来,再逐步替换为专用 starter。
Spring 生态版本一览
Spring Boot 4 带动整个 Spring 生态大版本升级:
| 生态组件 | 版本 |
|---|---|
| Spring Framework | 7.0 |
| Spring Security | 7.0 |
| Spring Data | 2025.1 |
| Spring AMQP | 4.0 |
| Spring Batch | 6.0 |
| Spring Integration | 7.0 |
| Spring for Apache Kafka | 4.0 |
| Spring GraphQL | 2.0 |
| Spring Session | 4.0 |
| Spring REST Docs | 4.0 |
迁移路径
官方推荐的迁移分三步走:
第一步:升级到 Spring Boot 3.5 最新版
确保项目在 3.5 上运行正常。Spring Boot 3.5 已经预先引入了部分 4.0 的废弃警告,可以提前发现需要修改的地方。
第二步:使用 Classic Starter 快速过渡到 4.0
引入 spring-boot-starter-classic,处理编译错误和废弃警告。此时项目应该能正常启动运行。
第三步:逐步替换为专用 Starter
将 Classic Starter 中的通配依赖替换为项目实际需要的专用 starter,移除不再使用的依赖。最终移除 Classic Starter。
迁移检查清单
相关文章: