一、Spring Boot 3 的核心变化
Spring Boot 3.x 基于 Spring Framework 6,最低要求 Java 17,并全面拥抱 Jakarta EE 9+(包名从 javax.* 改为 jakarta.*)。本文讲清升级要点与值得用的新特性。
二、必须知道的破坏性变更
1. 包名迁移
// 旧
import javax.persistence.*;
// 新
import jakarta.persistence.*;
所有 javax 相关导入都要改,全局替换即可。
2. Java 17 基线
不再支持 Java 8/11,充分利用 record、sealed、pattern matching。
3. 配置属性弃用
部分 spring.redis.* 等旧键被移除,启动时留意 warning。
三、值得用的新特性
1. 虚拟线程(Project Loom)
spring:
threads:
virtual:
enabled: true # 开启后 WebMvc 自动用虚拟线程
高并发下吞吐提升显著,且代码写法不变。
2. GraalVM 原生镜像
借助 spring-boot-maven-plugin 的 AOT 优化,编译成原生可执行文件,启动毫秒级、内存占用极低,适合 Serverless。
3. ProblemDetail 标准错误
内置 RFC 7807 的 ProblemDetail,统一错误响应更规范。
四、升级实操步骤
- JDK 升到 17+。
- Spring Boot 依赖版本改 3.x,spring-cloud 同步升级。
- 全局替换
javax→jakarta。 - 跑测试,逐个修 deprecated 警告。
五、踩坑提示
- 第三方库若仍依赖
javax,需先升级该库版本。 - Native Image 不支持所有反射,需配
@RegisterReflectionForBinding。
结语
3.x 是面向未来的版本,新项目直接上,老项目挑业务空闲期平滑升级。




