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">&lt;</span><span class="code-snippet__tag"><span class="code-snippet__name">parent</span></span><span class="code-snippet__tag">&gt;</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 =&nbsp;<span class="code-snippet__string">"/stream"</span>, produces =&nbsp;<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 应用。