2026 年 6 月 12 日 · 基于 Spring Boot 4.1.0 · MCP SDK 2.0 + Anthropic 重构 + ToolCalling 体系重写
🔥 一、发布概况:为期半年的重大升级
2026 年 6 月 12 日,Spring 官方正式发布 Spring AI 2.0.0 。这是 Spring AI 项目自 1.0.0 GA 以来最大的一次版本升级,从 1.1.x 到 2.0.0 历经多个 RC 阶段,积累了大量的 Breaking Changes 和功能重构。
| 关键信息 | 数据 |
|---|---|
| 发布时间 | 2026 年 6 月 12 日 |
| 前代版本 | 1.1.8(2026-06-12 同天发布) |
| 1.0.x 最终版 | 1.0.9(2026-06-12 同天发布) |
| 基础框架 | Spring Boot 4.1.0 |
| MCP SDK | 2.0.0 |
| 核心定位 | Java 生态的 AI 集成框架 |

⚡ 二、2.0.0 核心新特性
1️⃣ Anthropic 模块全面迁移至官方 Java SDK
这是 2.0.0 最重大的架构变更。 Spring AI 的 Anthropic 模块从自实现的 API 客户端彻底迁移到 Anthropic 官方 Java SDK:
| 编号 | 变更维度 | 1.x 时代 | 2.0.0 |
|---|---|---|---|
| 1 | API 客户端 | 自实现 AnthropicApi | 官方 Java SDK |
| 2 | 模型构建 | new AnthropicApi(apiKey) |
Builder 模式 :AnthropicChatModel.builder().apiKey(...) |
| 3 | 缓存支持 | 基础 | AnthropicCacheOptions/Strategy/Ttl 完整缓存体系 |
| 4 | 引用支持 | 无 | AnthropicCitationDocument 引用文档支持 |
| 5 | 新增选项 | --- | Web Search Tool、priority capacity tier |
| 6 | 包名变更 | api.utils |
顶级包 anthropic 下 |
新增四个 Chat Options:
-
spring.ai.anthropic.chat.web-search-tool.*--- Web 搜索工具配置 -
优先级容量层(Priority capacity tier)支持
-
完整缓存断点追踪器(CacheBreakpointTracker)
-
缓存资格解析器(CacheEligibilityResolver)
2️⃣ MCP SDK 2.0 深度集成
MCP(Model Context Protocol)的支持在 2.0.0 中经历了一次重大架构变革:
| 编号 | 变更 | 说明 |
|---|---|---|
| 1 | MCP SDK 升级 | 从旧版 → 2.0.0 |
| 2 | 传输模块迁移 | MCP 的 Spring 传输模块从 SDK 迁入 Spring AI 项目 |
| 3 | 包名变更 | io.modelcontextprotocol.server.transport → org.springframework.ai.mcp.server.*.transport |
| 4 | 输入验证 | 默认开启------工具参数按 JSON Schema 校验 |
| 5 | 必需字段强制 | SDK 的 builder 强制要求必填构造参数 |
| 6 | McpClientCustomizer | 改用泛型接口,支持 AsyncSpec / SyncSpec |
| 7 | HTTP Header 统一 | WebMvc 传输的 Header 统一为小写 |
3️⃣ Tool Calling 体系全面重构
这是 2.0.0 影响面最广的变更。
① 内部工具执行循环 → ToolCallingAdvisor
| 1.x | 2.0.0 |
|---|---|
| 每个模型各自实现内部循环 | 统一 ToolCallingAdvisor |
internalToolExecutionEnabled |
默认开启,无需配置 |
| 需手动控制 | 自动注册,检测到工具即生效 |
这一变更意味着:不再需要为每个 AI 供应商单独配置工具循环,Spring AI 会自动检测并注册工具执行能力。
② 对话历史管理重构
对话历史从 ToolContext 中彻底移除------工具只接收参数和自定义上下文,不再管理对话状态。ToolCallingAdvisor 负责维护工具调用间的对话历史。
③ 流式工具调用修复
之前 streamToolCallResponses 存在设计缺陷------中间请求块被流式输出但对应的响应未被发送,导致对话历史损坏。2.0.0 中此选项被移除,默认行为已修复。
④ 工具上下文 API 变更
bash
// 1.x
chatClient.prompt()
.tools(t -> t.callbacks(myCallback).context("tenantId", "acme"))
.call().content();
// 2.0.0
chatClient.prompt()
.tools(myCallback)
.toolContext(Map.of("tenantId", "acme"))
.call().content();
4️⃣ ChatClient Options 全栈重构
| 变更 | 说明 |
|---|---|
| Builder 模式强制 | 所有 Options 必须通过 Builder 创建,编译期检查 |
| 默认温度移除 | 不再提供 0.7 的默认温度,改为各 AI 提供商的原生默认值 |
| Options 默认值迁移 | 从各 Model 类移除,统一到 Options Builder |
getDefaultOptions()→ getOptions() |
API 简化 |
5️⃣ 模型配置属性重构
配置属性大幅简化:
yaml
bash
# 1.x
spring.ai.openai.embedding.options.model=text-embedding-3-small
2.0.0
spring.ai.openai.embedding.model=text-embedding-3-small
所有 *.options.* 层级中的 options. 被移除,直接使用 *.model 等属性。
6️⃣ TTS / OpenAI SDK 迁移
-
OpenAI TTS 模块从
SpeechModel→TextToSpeechModel(统一接口) -
OpenAI Chat 模块全面使用 Jackson 2(移除 Jackson 3 的混合使用)
-
OpenAI 底层 SDK 统一迁移到 OpenAI Java SDK
7️⃣ Azure OpenAI Entra ID 支持
新增 Entra ID 身份认证管理,通过干净的自动配置实现 Azure OpenAI 的安全访问。
📊 三、从 1.x 到 2.0:性能与架构提升
架构层面的飞跃
| 维度 | 1.1.x | 2.0.0 | 提升 |
|---|---|---|---|
| Tool Calling 循环 | 各模型自实现 | 统一 Advisor | 代码量减少 70% |
| Anthropic API 维护 | 需自跟踪 | 官方 SDK | 零维护成本 |
| MCP 传输模块 | 外部 SDK | Spring 项目内 | 版本锁定 |
| 对话历史 | 散落在 Tools | Advisor 统一管理 | 修复数据损坏 |
| JSON Schema 校验 | 无 | MCP 服务端默认开启 | 安全性提升 |
| 配置属性 | 嵌套多层级 | 扁平化 | 易用性提升 |
性能改进点
| 改进方向 | 说明 |
|---|---|
| 工具调用开销 | 统一 ToolCallingAdvisor 减少序列化和调度开销 |
| 对话历史一致性 | MongoDB 存储的消息顺序修复(曾经逆序返回) |
| 内存管理 | Options 不再依赖 Jackson 3,减少类加载冲突 |
| 序列化 | 统一 Jackon 2,移除 Jackson 3 混合使用 |

⚠️ 四、差距与不足
已知问题
| 问题 | 说明 | 严重程度 |
|---|---|---|
| Breaking Changes 极多 | 从 API 到配置到模块结构几乎全面变更 | 🔴 迁移成本高 |
| Moonshot/Qianfan 移除 | 国内模型厂商被移出主项目,移至社区仓库 | 🔴 中国用户受影响 |
| MiniMax 专用支持移除 | 改为通过 Anthropic 通用接口访问 | 🟡 功能退化 |
| Watson AI 移除 | IBM Watson 集成因模型过时被移除 | 🟢 影响有限 |
| Cosmos DB 移出 | Azure Cosmos DB 支持移至外部团队维护 | 🟡 需额外配置 |
| HanaDB 向量库移除 | SAP Hana 向量存储自动配置取消 | 🟢 小众场景 |
| 温度默认值移除 | 之前依赖 0.7 默认值的应用可能行为变化 | 🟡 需显式配置 |
| OpenSearch 兼容性 | HTTP Client5 升级可能需要调整 | 🟡 特定场景 |
与竞品的差距
| 维度 | Spring AI 2.0.0 | LangChain4j | Semantic Kernel |
|---|---|---|---|
| 语言 | Java (Spring 生态) | Java | C#/Python/Java |
| MCP 集成 | ⭐ 原生深度集成 | 有限 | 有限 |
| 模型提供商覆盖面 | ⭐ 极广(20+) | 广 | 中 |
| Spring 生态绑定 | 强依赖 | 弱 | 无 |
| 文档完善度 | 好(持续改进中) | ⭐ 优秀 | ⭐ 优秀 |
| 学习曲线 | 陡(大量 Breaking Changes) | 平缓 | 中等 |
| 国内模型支持 | ❌ Moonshot/Qianfan 移除 | ⭐ 好 | 中 |
🔮 五、未来演进方向
短期(2.x 系列)
| 方向 | 预期 |
|---|---|
| 🚀 MCP Hub 集成 | 可视化 MCP 工具管理 |
| 🔧 社区复原 | Moonshot/Qianfan 等国内模型以社区模块形式回归 |
| 📚 文档完善 | 2.0 升级指南和更多代码示例 |
| 🧪 Agent 编排增强 | 多 Agent 协作工作流支持 |
中长期
| 方向 | 推测 |
|---|---|
| 🎯 AI Agent 原生框架 | 从"AI 集成"走向"Agent 开发框架" |
| ☁️ 云原生 AI | 深度集成 Kubernetes + AI 推理 |
| 🔗 多模态扩展 | 视频理解、3D 生成等能力 |
| 🌐 国际化模型市场 | 模型发现和接入的标准化 |
📌 六、升级建议
从 1.1.x 升级
| 步骤 | 关注点 |
|---|---|
| 1️⃣ | 更新依赖到 spring-ai-bom:2.0.0 |
| 2️⃣ | Anthropic 代码重构 --- 改用 Builder 模式 |
| 3️⃣ | Tool Callback → ToolCallingAdvisor |
| 4️⃣ | MCP 包名更新 --- 迁移到 org.springframework.ai.mcp |
| 5️⃣ | Options 属性扁平化 --- 移除 .options. 层级 |
| 6️⃣ | 温度显式配置 --- 设置 spring.ai.*.chat.temperature |
| 7️⃣ | Moonshot/Qianfan → 社区版 |
从 1.0.x 升级
强烈建议做一次大的 API 映射审计 ,因为从 1.0.x 到 2.0.0 跨越了 1.1.x 和 2.0.0-RC,积累了数百项 API 变更。
📌 七、总结
Spring AI 2.0.0 是 Spring 生态在 AI 集成领域的一次里程碑式升级。它以 Anthropic 官方 SDK 迁移、MCP 深度集成、ToolCalling 统一架构 三大核心变革,从根本上提升了框架的可维护性和扩展性。
三个核心信号
-
🏆 MCP 成为一等公民 --- 传输模块迁入 Spring AI 项目,验证机制默认开启,Spring 在 MCP 生态中的话语权显著增强
-
🏆 Tool Calling 的统一是架构正确方向 --- 从"每个模型自实现"到"统一 Advisor",是 Spring AI 走向成熟的关键一步
-
🏆 告别"保姆级"默认值 --- 默认温度移除、Options 重构、配置扁平化------Spring AI 正在从"新手友好"走向"专业级框架"
一句话总结
Spring AI 2.0.0 是一次"刮骨疗毒"式的升级------大量 Breaking Changes 短期会痛,但从 Anthropic SDK 迁移到 MCP 深度集成到 ToolCalling 统一架构,长期来看是 Spring AI 走向企业级 AI 开发框架的必经之路。
欢迎访问 小易撩挨踢