Spring AI 2.0 正式落地,JAVA程序员转型AI的最佳选择
Spring AI 2.0.0 GA 终于发布了。从“能用”到“好用”,Java 在 AI 领域的开发也进入工程化时代。究竟什么是Spring AI ?Spring AI 2.0 有哪些变化?今天就和大家一起梳理Spring AI 2.0 的 核心变化。
看过我之前文章的朋友应该清楚,之前的Spring AI 实战系列文章都是基于 Spring AI 1.x 写的。后续我的整套 Spring AI 实战系列文章,也会全部切换到 2.0 版本来讲解。
关于的Spring AI 入门介绍可以参考我之前的文章《Spring AI 深度解析:Java 生态原生 AI 框架入门指南》。
一、Spring AI 发展简史
想要看懂Spring AI 2.0重构的核心意义,需要先捋清版本迭代的逻辑,只有这样就能明白为什么2.0是跨越式升级:
-
Spring AI 1.0(2025.5 GA):Java首个官方LLM标准化框架,核心解决「多模型适配混乱」问题,统一OpenAI、通义、DeepSeek等模型调用,基础支撑Chat对话、简单RAG、简陋工具调用。缺点是架构耦合严重,无扩展能力,不适合复杂业务。
-
Spring AI 1.1:小幅迭代,补齐向量库、基础聊天记忆、社区版MCP,但底层核心逻辑未动,工具调用、链路拦截、能力复用依旧是硬伤,只能手动封装工具集合。
-
Spring AI 2.0(2026.5 GA):经历8个里程碑+2个RC版本打磨,底层完全重构,全面适配Spring Boot4、Framework7,新增Skill标准化能力、全链路Advisor编排、原生MCP、生产级可观测,彻底面向Agent智能化开发。
Spring AI 1.0 更多是打底,先帮大家搞定各类大模型调用,把最基础的接入门槛打通。 到了 Spring AI 2.0 则是全方位升级,不管是适配思路还是底层框架基线都重新调整,不再一味堆砌模型厂商,转而深度适配主流大模型,核心就是适配企业场景,支撑 AI 业务规模化、工业化落地开发。
二、Spring AI 2.0 vs 1.0 核心变更
这次,Spring AI 2.0.0 GA 的发布不只是新增模型、补充几个 Starter 那么简单,而是把整套开发架构做了一次大的重构。如果说Spring AI 1.0只能算“能用的大模型调用工具”,2.0是真正适配工业化Agent开发、支持模块化编排的生产级框架。
1. 全新基线
Spring AI 2.0 规定运行最低环境为 Spring Boot 4.0、4.1 以及 Spring Framework 7.0,同时建议使用 Java 21 及以上版本。这次升级不只是简单更新依赖包,底层整体能力也实现了大幅提升。
-
Spring AI 2.0.x 配套基线:Spring Boot仅支持 4.0.x、4.1.x,不兼容任何 3.x 版本,Spring Framework 7.0+,JDK 最低 17,生产推荐 21(Boot4 原生优化)。
-
Jackson 3 迁移:JSON 序列化性能大幅提升,
ObjectMapper变为不可变对象,需要通过JsonMapper.builder()构建。Spring AI 2.0 同时引入了JsonHelper类,方便开发者自定义JsonMapper。 -
JSpecify 空安全注解:整个代码库全面标注
@NullMarked,结合 Kotlin 的空安全机制,能在编译期就拦截大量 NPE 风险。 -
模块化自动配置:Spring Boot 4 移除了 3.x 中所有废弃的 API,自动配置架构更加清晰。
踩坑提醒
不要只改 spring-ai 版本号,Boot 版本不动,启动直接报类找不到、包路径异常,升级必须两步走:先升 Boot 到 4,再升级 Spring AI。
2. 模型支持调整
Spring AI 2.0 优化调整了核心模型相关的支持策略,不再追求兼容更多厂商,而是深耕主流核心厂商,整体思路从覆盖广泛转变为做精做深。
| 厂商
|
Spring AI 1.x
|
Spring AI 2.0
OpenAI
|
3 种变体(Azure、HTTP、SDK)
|
统一为官方 SDK 一种
Anthropic
|
2 种变体(HTTP、SDK)
|
统一为官方 SDK 一种
| |
Google GenAI
|
2 种实现(GenAI SDK、Vertex)
|
统一为 GenAI SDK
| |
Amazon Bedrock
|
保持支持
|
保持支持
| |
Mistral AI
|
保持支持
|
保持支持
| |
DeepSeek
|
保持支持
|
保持支持
| |
Ollama
|
保持支持
|
保持支持
|
从全面覆盖到重点支持,背后的逻辑其实很好理解:直接对接各大厂商官方 SDK,能让 Spring AI 第一时间同步各大模型 API 的新功能与扩展能力。像 Oracle 的 OCI 生成式 AI、Azure Cosmos DB 这类组件,如今都交由对应厂商负责维护,厂商和 Spring AI 团队协同迭代更新。
3. 工具调用架构重构
Spring AI 1.1 虽然上线了工具调用能力,但存在诸多不足。1.x 所有版本的工具循环逻辑都硬编码内嵌在各个模型内部,属于“黑盒执行”,开发者完全无法拦截入参、打印完整交互日志、限制调用次数,没有任何自定义管控和扩展能力,根本无法满足生产风控、日志排查、性能优化需求。
Spring 2.0 彻重构了这套逻辑,将工具调用(Tool Calling)循环独立为 Advisor 组件,嵌入 ChatClient 调用链路中。我们只需调整 Advisor 执行顺序,就能轻松实现各类自定义管控:
-
完整记录工具的全部交互日志,方便问题排查;
-
在工具执行前后,自定义参数校验、权限鉴权逻辑;
-
多工具批量检索、过滤无关工具,减少 token 消耗,
同时注解也全面升级:废弃旧的 @AiFunction,全新启用 @Tool 注解,支持嵌套实体类、可空参数、独立参数描述 @ToolParam,可自动生成 JSON 结构,无需手动编写,开发效率大幅提升。
4. 原生 MCP 完整支持
Spring AI 2.0 的 MCP 支持相比 1.1 实现了传输层内迁框架核心、默认协议切换为 Streamable HTTP、注解驱动标准化及版本节奏对齐,彻底解决了此前版本依赖撕裂和扩展性瓶颈问题 。
核心差异对比
-
传输层归属:1.1 版传输实现位于外部 MCP Java SDK 中,导致版本发布不同步;2.0 版将 WebMVC/WebFlux 传输模块整体移入 Spring AI 框架内部,实现版本统一管控 。
-
默认传输协议:1.1 版默认使用 SSE(Server-Sent Events),存在有状态长连接难扩容问题;2.0 版默认切换为 Streamable HTTP(支持无状态变体),SSE 标记为 deprecated,显著提升生产环境横向扩展能力 。
-
注解与开发模型:1.1 版注解处于社区孵化阶段,包名独立且功能分散;2.0 版将 @McpTool等注解并入核心模块 org.springframework.ai.mcp.annotation,统一使用 McpSyncRequestContext单参数处理日志、进度上报及采样,简化服务端开发 。
-
协议规范对齐:2.0 版全面对齐 MCP 2.0 协议规范,支持统一端点(如 /mcp)处理双向流式通信,取代了 1.1 版中 /sse 和 /message 分离的双端点架构,提升高并发下的连接稳定性与恢复能力。
-
工具调用集成:配合 2.0 架构重构,MCP 工具不再依赖模型内部循环,而是通过 ToolCallingAdvisor 统一编排,支持动态工具发现(ToolSearchToolCallingAdvisor)以大幅降低 Token 消。
5. 完善可观测体系
Spring AI 1.x 虽然新增了基础可观测能力,但仅支持简单日志打印,指标统计粗糙、链路追踪不完整,线上排查问题依旧十分困难。2.0 全面重构可观测体系,标准化接入 Micrometer 监控埋点,补齐生产环境刚需的精细化监控、全链路追踪能力。
目前可精准统计、监控的指标包含:
-
Token 消耗统计(输入 / 输出 / 工具调用 token 分开记录)
-
模型调用耗时、异常率 Metrics
-
SkyWalking 兼容 Trace 链路,一次 AI 请求完整追踪,包含多轮工具调用子 span线上排查模型超时、token 超限问题不用再捞杂乱日志。
6. 向量存储生态扩容,国产库全面适配
Spring AI 1.1 已经扩容了部分向量库,但整体支持数量少,仅支持 6 种向量库,2.0 官方 Starter 覆盖 15+,新增支持 Milvus、PGVector、磐维向量扩展、Elasticsearch 等主流向量存储,且全部做好自动配置,只需在 yml 文件简单配置,即可快速接入使用,适配各类国产项目落地需求。
三、Spring AI 2.0 的整体分层架构
下面这张图是 Spring AI 2.0 的整体分层架构图,从上到下分别是应用层、核心 API、增强能力、集成层和适配层。Spring AI 2.0 完全重构分层,每层职责解耦,也是它扩展性远超 1.x 的核心原因。
逐层解释一下:
-
**业务应用层:**我们日常写的 Controller、Agent 业务、MCP 对外工具都在这一层,只调用 ChatClient,完全不感知底层模型差异。
-
ChatClient 统一入口层2.0 唯一推荐调用入口,废弃 1.x 直接操作 ChatModel 的写法。所有 Prompt、流式、全局参数统一在这里配置。
-
**Advisor 拦截编排层(2.0 最大改动):**1.x 没有独立分层,工具循环、日志、记忆逻辑全部耦合在模型内部;2.0 把所有切面逻辑抽成独立 Advisor,可调整执行顺序,工具调用循环单独抽成 ToolCallingAdvisor,想加拦截、鉴权、限流只需要新增 Advisor。
-
**核心标准API:**整套框架标准接口,所有厂商、存储、工具都要实现这套接口,保证业务代码零改动切换模型 / 向量库。
-
**底层实现:**各厂商 SDK 封装、向量存储驱动、MCP 协议实现、监控埋点,框架底层适配,上层业务无感知。
四、Spring AI 2.0 完整案例
1. Maven 父 POM 版本配置
<span leaf=""><span class="code-snippet__tag"><</span><span class="code-snippet__tag"><span class="code-snippet__name">parent</span></span><span class="code-snippet__tag">></span></span>
2. application.yml 基础配置
<span leaf=""><span class="code-snippet__attribute">spring</span>:</span>
3. 基础同步对话 Controller
<span leaf=""><span class="code-snippet__meta">@RestController</span></span>
4. 流式输出(前端打字机效果)
<span leaf=""><span class="code-snippet__meta">@GetMapping</span>(value = <span class="code-snippet__string">"/stream"</span>, produces = <span class="code-snippet__title">MediaType</span>.<span class="code-snippet__property">TEXT_EVENT_STREAM_VALUE</span>)</span>
5. 工具调用示例(@Tool 新注解)
<span leaf=""><span class="code-snippet__comment">// 工具类</span></span>
访问接口:http://localhost:8080/ai/tool?msg=北京今天天气怎么样,模型会自动调用 getWeather 工具后返回结果。
总结
Java在AI时代一直都是配角。但Spring AI 2.0 + Java 21这套组合用下来,构建企业级Agent系统的体验并不比Python差,甚至在并发性能和类型安全上还更有优势。如果你也是Java背景,不用急着换语言,这套技术栈完全能扛住生产需求。
Spring AI 2.0 绝不是简单地在 Spring Boot 中添加几行调用大模型的代码,而是将 RAG、会话记忆、Agent 编排、可观测性等 AI 应用的通用模式。它最大的价值,就是让 Java 后端工程师无需跳出熟悉的生态,就能构建出高质量、工业化的 AI 应用。
- 原文作者:知识铺
- 原文链接:https://index.zshipu.com/ai002/post/20260822/Spring-AI-2.0-%E6%AD%A3%E5%BC%8F%E8%90%BD%E5%9C%B0JAVA%E7%A8%8B%E5%BA%8F%E5%91%98%E8%BD%AC%E5%9E%8BAI%E7%9A%84%E6%9C%80%E4%BD%B3%E9%80%89%E6%8B%A9/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。
- 免责声明:本页面内容均来源于站内编辑发布,部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题,请立即联系客服进行更改或删除,保证您的合法权益。转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 sblig@126.com