Spring Boot 3.x 新特性与升级实操(Java 17 基线)

一、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,统一错误响应更规范。

四、升级实操步骤

  1. JDK 升到 17+。
  2. Spring Boot 依赖版本改 3.x,spring-cloud 同步升级。
  3. 全局替换 javaxjakarta
  4. 跑测试,逐个修 deprecated 警告。

五、踩坑提示

  • 第三方库若仍依赖 javax,需先升级该库版本。
  • Native Image 不支持所有反射,需配 @RegisterReflectionForBinding

结语

3.x 是面向未来的版本,新项目直接上,老项目挑业务空闲期平滑升级。

上一篇 Redis 缓存穿透/击穿/雪崩解决方案(附代码)
下一篇 踩坑记录:一次生产环境 OOM 排查全流程复盘