Spring Boot 3.5 停止支持:Spring AI 2.0 用户的迁移清单
一个被忽视的截止日期
2026 年 6 月 30 日,Spring Boot 3.5 正式停止维护(End of Life)。
这意味着什么?
运行 Spring Boot 3.5 的系统不再收到任何安全补丁。Spring Security 和 Spring Cloud Gateway 中已知的可利用漏洞将不再被修复。
而 Spring AI 2.0 GA 要求 Spring Boot 4.0+。
也就是说:如果你在用 Spring AI 2.0,你已经在 Spring Boot 4.0 上了。但如果你还在 3.x,你需要知道这个时间窗口已经关闭了。
为什么这不是”可以慢慢迁”的事
在 UberConf 2026 的安全议题中,有一个被反复强调的观点:
Spring Boot 3.5 EOL 不是一个”建议升级”通知,而是一个”安全暴露窗口已打开”的警告。运行未打补丁的 post-EOL 版本面临的是已文档化的、可利用的漏洞,且无法获得后续 CVE 修复。
这不是理论风险。Spring Security 和 Spring Cloud Gateway 的漏洞历史已经证明:公开的 CVE 在 EOL 后会被快速武器化。
迁移的 3 条路径
路径 1:3.5 → 4.0 直升(推荐)
适合:中小型项目,Spring AI 2.0 用户(本来就需要 4.0)
1 | Spring Boot 3.5 → 4.0 |
关键破坏性变化:
| 变化 | 影响 | 迁移策略 |
|---|---|---|
| Jackson 3.x 默认 | JSON 序列化行为变化 | 全量回归 API 响应格式 |
| Spring Framework 7.0 | HTTP Interface 变化 | 检查所有 HTTP 客户端声明 |
| 虚拟线程默认启用 | 线程池行为变化 | 测试 I/O 密集型端点的并发表现 |
| Spring AI 2.0 API | ChatClient / Advisor 变化 | 参考 Spring AI 2.0 升级清单 |
路径 2:3.5 → 3.5 Extended Support(过渡)
适合:大型项目,无法一次性迁移到 4.0
Spring Boot 3.5 的商业扩展支持提供有限的安全补丁,但:
- 需要付费
- 只有安全修复,没有功能更新
- 最终还是要迁移到 4.0
这不是终点,是买了时间。
路径 3:3.4 及以下 → 4.0(高风险)
如果你还在 3.4 或更早版本,你已经在 EOL 之后了。迁移不能再拖。
Spring AI 2.0 用户的特殊注意
如果你已经在用 Spring AI 2.0,你已经在 Spring Boot 4.0 上了——但你的依赖可能没有跟上。
检查清单
Spring Cloud 版本:Spring Boot 4.0 要求 Spring Cloud 2025.x+。旧版 Spring Cloud 与 Boot 4.0 不兼容。
Spring Cloud Alibaba 版本:Spring AI Alibaba 1.1.2.0+ 要求 Spring AI 2.0 + Spring Boot 4.0。确认你的
spring-cloud-alibaba版本匹配。数据库驱动:
- MySQL Connector/J 8.x → 9.x(MySQL 9.2 向量搜索需要)
- 如果用了 VECTOR 类型,必须 9.x 驱动
MQ 客户端:
- RocketMQ Spring Boot Starter 3.x → 3.1+(适配 Boot 4.0)
- Kafka Spring 版本需与 Spring Boot 4.0 对齐
ES 客户端:Spring Data ES 适配 Boot 4.0 的版本
Jackson 3.x 迁移:
- 日期格式默认行为变化
@JsonInclude默认值变化- 建议用 Jackson 3 的
JacksonAnnotationIntrospector做兼容检查
一个容易被忽略的迁移坑:虚拟线程
Spring Boot 4.0 默认启用虚拟线程。这对 I/O 密集型的 Spring AI 应用是好事——LLM API 调用是典型的 I/O bound 场景。
但有两个注意:
1. ThreadLocal 污染
虚拟线程数量可以极大(百万级),但 ThreadLocal 会在每个虚拟线程上创建副本。如果你在 ThreadLocal 里存了大对象(如 Embedding 缓存),内存会爆。
1 | // 危险:每个虚拟线程一份副本 |
2. synchronized 块 pinning
虚拟线程在 synchronized 块里会 pin 住载体线程(carrier thread),降低并发。如果你的 RAG 检索路径有 synchronized:
1 | // 危险:pin 住载体线程 |
Spring AI 内部的 ChatClient 是线程安全的,不需要 synchronized。但如果你自定义了 Advisor 或 Memory,需要检查。
迁移决策树
1 | 你在 Spring Boot 几? |
这意味着什么
Spring Boot 3.5 EOL 不只是一个版本号问题。它标志着:
- Spring 6 / Boot 3 时代的终结。Spring 7 / Boot 4 是新的基准线。
- **AI 时代的 Spring 是 4.0+**。Spring AI 2.0 不向下兼容 Boot 3.x,这意味着”先升级 Spring Boot,再上 Spring AI”——而不是反过来。
- 安全债务开始计息。每多跑一天 3.5,就多一天的已知漏洞暴露窗口。
