本文从 “架构师 / 技术负责人视角”的角度。进一步 拉开层次、拉深分析深度,不只是“版本有什么”,而是回答:
为什么要升?什么时候升?升到哪一条线风险最低?不同类型系统怎么选?
一、背景:Spring Boot 3.x 已进入“成熟期”
从 2023 年 Spring Boot 3.0 正式落地 Jakarta EE 9+ 开始,3.x 系列本质上经历了三个阶段:
-
3.0–3.2:平台迁移期
- Java EE → Jakarta EE
- Spring Framework 6
- Java 17 成为最低门槛
-
3.3–3.4:能力完善期
- 性能、可观测性、云原生
- 虚拟线程、结构化日志开始“可用”
-
3.5 及以后:生产成熟期
- 默认配置更偏生产
- 云原生与容器优先
- 运维、可观测、安全能力系统化
本文聚焦的 3.3 / 3.4 / 3.5,正好覆盖“成熟期的三个关键节点”。
二、版本线与生命周期:先看“能不能用”,再谈“好不好用”
1️⃣ 版本与支持状态总览(2026 视角)
| 版本线 | 初始发布时间 | 当前状态 | 社区支持 | 技术定位 |
|---|---|---|---|---|
| 3.3.x | 2024-05 | ❌ 已退役 | 已结束 | 过渡稳定 |
| 3.4.x | 2024-11 | ⚠ EOL | 即将/已结束 | 中期增强 |
| 3.5.x | 2025-05 | ✅ 主流 | 活跃维护 | 生产主线 |
结论一句话:
3.3/3.4 是“曾经稳定”,3.5 是“当前正确”。
2️⃣ 最新小版本 & 最稳定小版本(非常关键)
这是你在生产环境最关心的部分:
| 版本线 | 最新小版本 | 最稳定小版本 | 建议态度 |
|---|---|---|---|
| 3.3.x | 3.3.6 | 3.3.6 | ❌ 仅存量系统 |
| 3.4.x | 3.4.13 | 3.4.5 | ❌ 不建议新用 |
| 3.5.x | 3.5.9 | 3.5.9 | ✅ 强烈推荐 |
⚠ 一个重要原则
在 Spring Boot 的节奏下:
“最新小版本 = 最稳定小版本”
因为小版本几乎只修 Bug 和安全问题,不引入破坏性变更。
三、底层技术栈演进:不是“功能差异”,而是“架构重心转移”
1️⃣ Java 与 JVM 生态支持
| 维度 | 3.3.x | 3.4.x | 3.5.x |
|---|---|---|---|
| 最低 Java | 17 | 17 | 17 |
| 推荐 Java | 17 / 21 | 21 | 21 / 23 |
| Loom 支持 | 实验级 | 可生产 | 默认友好 |
| CDS / 启动优化 | 基础 | 改进 | 成熟 |
深度解读:
- 3.3.x:还能“兼容 17 心态”
- 3.4.x:开始为 Java 21 做准备
- 3.5.x:明显假设你“已经在用 21”
如果你现在还在 JDK 17:
👉 3.5 依然没问题,但最佳实践已经指向 21
四、性能与并发模型:从“线程池”到“调度模型”
1️⃣ 虚拟线程(Virtual Threads)的演进
| 方面 | 3.3.x | 3.4.x | 3.5.x |
|---|---|---|---|
| 支持状态 | 可用但谨慎 | 推荐使用 | 生产默认候选 |
| Web MVC | 需显式配置 | 支持更好 | 深度优化 |
| JDBC / 阻塞调用 | 风险存在 | 改善 | 适配度高 |
关键变化不在“能不能用”,而在“敢不敢用” :
- 3.3:技术预览
- 3.4:架构师尝试
- 3.5:可以写进架构规范
2️⃣ 启动速度与内存模型
- 3.3 引入 CDS + AOT 改善
- 3.4 优化 Bean 初始化顺序
- 3.5 针对容器启动、K8s 滚动发布显著优化
👉 对 微服务 / Serverless / 弹性扩缩容 非常关键
五、可观测性(Observability):从“可选能力”到“默认能力”
1️⃣ 日志体系的质变:结构化日志
| 维度 | 3.3.x | 3.4.x | 3.5.x |
|---|---|---|---|
| JSON 日志 | 需自配 | 半自动 | 官方推荐 |
| TraceId 贯通 | 基础 | 改进 | 默认更合理 |
| 云日志平台 | 需适配 | 友好 | 原生友好 |
这是一个质变点:
Spring Boot 3.5 明显假设你的日志会被 ELK / Loki / OpenTelemetry 消费,而不是人肉 grep。
2️⃣ Metrics / Tracing
- Micrometer 全线升级
- Prometheus / OTEL 体验逐代改善
- 3.5 中自动配置“更激进但更合理”
六、安全与配置模型:从“可配置”到“安全默认”
1️⃣ Spring Security 生态
| 维度 | 3.3.x | 3.4.x | 3.5.x |
|---|---|---|---|
| Security 默认策略 | 保守 | 收紧 | 更安全 |
| SSL / Service Connection | 基础 | 改善 | 一等公民 |
| OAuth2 / JWT | 稳定 | 成熟 | 生产友好 |
升级风险点提醒
3.5 对部分安全默认值更严格
👉 老项目升级必须跑完整回归测试
七、云原生与容器:3.5 是“为 K8s 而生”
1️⃣ 容器化能力对比
| 能力 | 3.3.x | 3.4.x | 3.5.x |
|---|---|---|---|
| Buildpacks | 支持 | 优化 | 最佳实践 |
| K8s 探针 | 可用 | 改进 | 深度集成 |
| Service Binding | 基础 | 改善 | 成熟 |
3.5 明确是“云原生优先设计”
如果你是:
- 微服务
- Kubernetes
- 云托管数据库
👉 3.5 没有替代选项
八、升级路径与风险控制(非常实战)
1️⃣ 不同起点的推荐路径
| 当前版本 | 推荐路径 |
|---|---|
| 3.0–3.2 | 3.2 → 3.3 → 3.5 |
| 3.3.x | 3.3 → 3.5(可跳过 3.4) |
| 3.4.x | 直接 3.5 |
2️⃣ 核心风险点清单
- Spring Security 默认行为变化
- 日志格式变化(JSON)
- Executor / Task 配置差异
- 少量自动配置 Bean 行为调整
👉 但都不是“架构级破坏”
九、最终选型建议(结论版)
✅ 新项目
无条件选 Spring Boot 3.5.x 最新小版本
理由:
- 生命周期最长
- 云原生最成熟
- Java 21 最佳拍档
✅ 老项目(企业级)
| 场景 | 建议 |
|---|---|
| 追求稳定 | 3.5.x |
| 技术债多 | 分阶段升级 |
| 高并发 | 3.5 + Virtual Threads |
| 云原生 | 3.5 必选 |
十、一句话总结
Spring Boot 3.3 是“能用”,3.4 是“好用”,3.5 是“该用”。