Spring AI 入门:Java 开发者的 AI 集成第一课
一、Spring AI 是什么Spring AI 是 Spring 生态下的 AI 框架目标是让 Java 应用接入 AI 大模型像操作数据库一样简单。用过 Spring 的人都熟悉 JDBC——它定义了一套标准接口不管你用 MySQL 还是 PostgreSQL代码写法是一样的。Spring AI 做的事类似它把 OpenAI、通义千问、DeepSeek、Claude、Ollama 等各种大模型统一成一套 API切换模型不需要改业务代码。核心能力三块1. 对话调用Chat——发消息给 AI拿回复2. 向量嵌入Embedding——把文本转成向量用于语义搜索3. 模型输出解析Structured Output——把 AI 的回复直接映射为 Java 对象官网https://docs.spring.io/spring-ai/reference/二、为什么需要 Spring AI没有 Spring AI 的时候Java 项目调大模型是什么画风1. 拿 HTTP 客户端手动拼 JSON 请求2. 解析返回的 JSON自己处理错误和重试3. 换模型时接口地址、参数名、认证方式全不同改一堆代码Spring AI 解决的问题- 统一 APIChatClient / EmbeddingClient / ImageClient 等接口- 自动管理 Prompt 模板、对话历史、Token 计数- 内置 RAG 支持文档读取、向量存储、检索增强- 与 Spring Boot 深度集成自动配置、属性注入- 支持函数调用Function Calling让 AI 能调你的 Java 方法三、快速上手3 分钟跑通 ChatSpring Boot 项目要求 JDK 17引入依赖properties java.version17/java.version spring-ai.version1.1.2/spring-ai.version /properties dependencyManagement dependencies dependency groupIdorg.springframework.ai/groupId artifactIdspring-ai-bom/artifactId version${spring-ai.version}/version typepom/type scopeimport/scope /dependency /dependencies /dependencyManagement dependencies dependency groupIdorg.springframework.ai/groupId artifactIdspring-ai-starter-model-dashscope/artifactId /dependency /dependencies配置 application.yml通义千问 API 密钥在 https://dashscope.aliyun.com 申请spring: ai: dashscope: api-key: ${DASHSCOPE_API_KEY} chat: options: model: qwen3 temperature: 0.7写一个 ServiceService public class AIService { private final ChatClient chatClient; public AIService(ChatClient.Builder builder) { this.chatClient builder.build(); } public String ask(String question) { return chatClient.prompt() .user(question) .call() .content(); } }Controller 暴露接口RestController public class AIController { private final AIService aiService; public AIController(AIService aiService) { this.aiService aiService; } GetMapping(/ask) public String ask(RequestParam String q) { return aiService.ask(q); } }启动项目访问 http://localhost:8080/ask?qSpring AI 是什么就能收到 AI 回复。四、结构化的回复输出纯文本回复很多时候不够用。比如你想让 AI 返回一个结构化的 JSON直接映射到 Java 对象// 定义输出结构 public record Book(String title, String author, int year) { } // 让 AI 按结构返回 Book book chatClient.prompt() .user(推荐一本 Java 入门书) .call() .entity(Book.class); System.out.println(book.title()); // 输出: Head First JavaSpring AI 底层会让 AI 以 JSON 格式输出然后用 Jackson 反序列化成你的目标类。支持 Record、POJO、List、Map 等常见类型。五、Prompt 模板实际项目中同一个 Prompt 结构要反复用只是参数不同。Spring AI 支持模板参数机制用 Java 17 文本块定义模板String prompt 你是一个翻译助手将以下文本从 {sourceLang} 翻译成 {targetLang} {text} 只返回翻译结果不要有任何额外说明。 ;然后传入参数调用String result chatClient.prompt() .user(u - u .text(prompt) .param(sourceLang, 英文) .param(targetLang, 中文) .param(text, Hello, Spring AI!) ) .call() .content(); // 输出: 你好Spring AI模板也可以外置为文件通过 Resource 读取适合生产环境。六、多模型切换Spring AI 最核心的价值——换模型不改业务代码。换配置就行# 换 DeepSeek也走 DashScope 兼容接口 spring: ai: dashscope: api-key: ${DASHSCOPE_API_KEY} chat: options: model: deepseek-chat# 换本地 Ollama spring: ai: ollama: base-url: http://localhost:11434 chat: options: model: qwen2.5代码里只用 ChatClient底层是通义千问、DeepSeek 还是 Ollama业务方法一行不用改。Spring AI 目前支持的模型提供商通义千问DashScope、OpenAI、Azure OpenAI、Anthropic Claude、Google Gemini、Ollama、DeepSeek、Mistral AI 等。通义千问是全链路都在国内网络延迟低推荐作为主力模型。七、工具调用Function Calling让 AI 能调用你的 Java 方法。比如用户问帮我查一下订单状态AI 可以触发一个查数据库的方法Configuration public class AITools { Bean ToolDescription(根据订单号查询订单状态) public ToolCallback orderStatus(OrderService orderService) { return ToolCallbacks.from(orderService::getOrderStatus, orderStatus, 根据订单号查询订单状态和物流信息); } }// 使用时ChatClient 自动把方法的描述和参数发给 AI // AI 判断需要调用时Spring AI 自动执行方法并返回结果给 AI String response chatClient.prompt() .user(我的订单 12345 到哪里了) .functions(orderStatus) .call() .content();整个流程用户提问 → AI 判断需要查订单 → Spring AI 调你的 Java 方法 → 结果返回给 AI → AI 组织自然语言回复。八、总结能力一句话ChatClient发消息收回复核心接口结构化输出AI 回复直接变 Java 对象Prompt 模板参数化复用 Prompt多模型切换改配置不改代码Function CallingAI 调你的 Java 方法Spring AI 的价值在于它让 Java 开发者用一个熟悉的方式Spring Boot 风格接入 AI不用去学 Python、不用写裸 HTTP 调用、不用手动处理 Token 和模型切换。如果你是 Spring 技术栈Spring AI 是目前最适合的 AI 集成方案。常见面试题与参考答案1. Spring AI 和 LangChain 有什么区别参考答案LangChain 是 Python 生态的 AI 框架Spring AI 是 Java 生态的对应方案。LangChain 发展早、生态更丰富但 Java 项目集成时需要额外封装。Spring AI 的优势是原生整合 Spring Boot——自动配置、属性注入、事务管理、Actuator 监控等全套 Spring 能力直接用学习成本低。两者设计理念相似统一模型接口、Prompt 模板、RAG 支持但 Spring AI 更深度绑定 Spring 生态。2. ChatClient 是线程安全的吗参考答案是的建议将 ChatClient 注册为 Spring Bean 单例使用。内部通过 Builder 模式创建每次 prompt() 调用都是独立请求不会共享状态。如果需要在同一个对话中维持上下文需要手动管理 ConversationId 或 Message 历史列表ChatClient 本身不保存会话状态。3. Spring AI 的项目状态适合生产吗参考答案Spring AI 1.1.2 是正式版本API 相对稳定但 Spring AI 生态仍在快速发展。生产使用建议在业务层和 AI 层之间加一层抽象接口方便后续版本升级时迁移。模型推荐以通义千问DashScope作为主力延迟低、国内合规Ollama 做本地开发和备份确保不会因为单一模型商的问题影响业务。

相关新闻

5个技巧让你轻松掌握Happy Island Designer:免费岛屿设计完全指南

5个技巧让你轻松掌握Happy Island Designer:免费岛屿设计完全指南

5个技巧让你轻松掌握Happy Island Designer:免费岛屿设计完全指南 【免费下载链接】HappyIslandDesigner "Happy Island Designer (Alpha)",是一个在线工具,它允许用户设计和定制自己的岛屿。这个工具是受游戏《动物森友会》(Anima…

2026/7/13 13:33:13 阅读更多 →
医疗GEO系统中RAG技术的挑战与优化实践

医疗GEO系统中RAG技术的挑战与优化实践

1. 医疗GEO系统架构中的RAG技术挑战 医疗健康领域的搜索系统面临着独特的行业挑战。在消费医疗场景下,用户查询往往包含大量非结构化描述(如症状表述、药品俗称、地方性医疗术语),同时医疗数据的专业性和敏感性又要求系统必须提供…

2026/7/13 13:33:12 阅读更多 →
终极指南:如何在Windows上使用JoyCon-Driver玩转Switch手柄

终极指南:如何在Windows上使用JoyCon-Driver玩转Switch手柄

终极指南:如何在Windows上使用JoyCon-Driver玩转Switch手柄 【免费下载链接】JoyCon-Driver A vJoy feeder for the Nintendo Switch JoyCons and Pro Controller 项目地址: https://gitcode.com/gh_mirrors/jo/JoyCon-Driver 你是否想在Windows电脑上使用Ni…

2026/7/13 13:33:12 阅读更多 →

最新新闻

如何使用AMD-Quark实现模型量化:从BF16到MXFP4的完整转换流程

如何使用AMD-Quark实现模型量化:从BF16到MXFP4的完整转换流程

如何使用AMD-Quark实现模型量化:从BF16到MXFP4的完整转换流程 【免费下载链接】Kimi-K2-Thinking-MXFP4-AttnFP8 项目地址: https://ai.gitcode.com/hf_mirrors/amd/Kimi-K2-Thinking-MXFP4-AttnFP8 在AI模型部署中,量化技术是平衡性能与效率的关…

2026/7/13 14:24:10 阅读更多 →
基于微信小程序的水果销售商城系统设计与实现

基于微信小程序的水果销售商城系统设计与实现

摘 要 随着生活水平的提高和健康意识的增强,人们对新鲜水果的需求日益增长。然而,传统的水果销售模式存在信息不对称、购买不便、价格不透明等问题,难以满足消费者的个性化需求。微信小程序凭借其庞大的用户群体和便捷的社交属性&#xff0…

2026/7/13 14:22:06 阅读更多 →
MCP3428与PIC18F97J60在工业数据采集中的高效应用

MCP3428与PIC18F97J60在工业数据采集中的高效应用

1. 为什么选择MCP3428与PIC18F97J60组合在工业现场的数据采集中,我们常面临三个核心痛点:信号微弱易受干扰、采样精度不足导致数据失真、以及传统方案布线复杂。MCP3428这款18位Δ-Σ ADC芯片恰好能解决这些问题——其内置2.048V基准电压和可编程增益放大…

2026/7/13 14:22:06 阅读更多 →
CTF-SHOW 题解(更新中)

CTF-SHOW 题解(更新中)

我帮你把内容整理成CSDN 技术博客常用格式,重点做了这些优化:统一标题层级(H2/H3)代码、路径、命令用 行内代码区分关键操作加粗,流程更清晰去掉口语化表达,更符合技术文档风格保留你原本的解题逻辑&#x…

2026/7/13 14:22:06 阅读更多 →
3步解锁B站缓存视频:m4s转MP4工具完全指南

3步解锁B站缓存视频:m4s转MP4工具完全指南

3步解锁B站缓存视频:m4s转MP4工具完全指南 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾为B站缓存的珍贵视频只能在官方客…

2026/7/13 14:20:05 阅读更多 →
YimMenu:终极GTA5增强菜单完整使用指南与安全防护方案

YimMenu:终极GTA5增强菜单完整使用指南与安全防护方案

YimMenu:终极GTA5增强菜单完整使用指南与安全防护方案 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimM…

2026/7/13 14:18:04 阅读更多 →

日新闻

Palworld存档编辑完全掌握:从零开始实现游戏数据可视化修改

Palworld存档编辑完全掌握:从零开始实现游戏数据可视化修改

Palworld存档编辑完全掌握:从零开始实现游戏数据可视化修改 【免费下载链接】palworld-save-tools Tools for converting Palworld .sav files to JSON and back 项目地址: https://gitcode.com/gh_mirrors/pa/palworld-save-tools 你是否曾经想要调整Palwor…

2026/7/13 0:01:19 阅读更多 →
浦东旧模块回收哪家强?专业评测带你一探究竟

浦东旧模块回收哪家强?专业评测带你一探究竟

于科技迅猛飞速迭代的当下此刻, 旧模块的回收处置, 不但关联着资源的再度利用, 而且更牵扯到数据安全以及环保合规事宜。你是不是也正为那堆积得如同山峦般的旧模块而发愁? 是不是不清楚该怎样安全且高效地去处理它们? 别忧心烦恼, 就在今日, 我会以具备权威影响力的自媒体博…

2026/7/13 0:01:19 阅读更多 →
卡梅德生物技术快报|重组蛋白的表达和纯化:IMAC 金属螯合色谱全流程工艺手册|基质 - 配基 - 金属离子匹配与蛋白质分离纯化参数优化

卡梅德生物技术快报|重组蛋白的表达和纯化:IMAC 金属螯合色谱全流程工艺手册|基质 - 配基 - 金属离子匹配与蛋白质分离纯化参数优化

1 研究背景与现存技术痛点(提出问题)基因工程、蛋白质组学、生物制药研发流程中,蛋白质分离纯化是决定下游实验成败的关键环节。当前实验室常规蛋白质分离纯化工艺存在三类难以标准化的技术瓶颈:传统离子交换、分子筛层析无特异性…

2026/7/13 0:05:20 阅读更多 →

周新闻

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨 在一个阳光明媚的上午,互联网大厂的面试官坐在桌前,准备迎接他的面试候选人——燕双非,一个以搞笑和幽默著称的程序员。第一轮提问 面试官:燕双非,作…

2026/7/13 4:38:36 阅读更多 →
车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估

车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估

车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估在智能驾驶和车联网技术快速发展的今天,车载以太网作为新一代车载网络的核心传输技术,其物理层性能直接决定了数据传输的可靠性和稳定性。1000BASE-T1作为当前主流的…

2026/7/13 4:38:38 阅读更多 →
VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战,5步完成Keil工程转换

VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战,5步完成Keil工程转换

VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战指南嵌入式开发领域正经历一场工具链的静默革命。当传统Keil用户首次打开VSCode的扩展市场搜索EIDE时,往往会惊讶于这个看似简单的插件竟能重构十余年的开发习惯。本文将揭示如何用五个精准步骤&#xff0…

2026/7/13 4:38:40 阅读更多 →

月新闻