Java 程序员的 AI 转型第二课:5行代码无缝接入GPT5.4!Spring AI 环境搭建与ChatClient 极速入门
欢迎来到《Spring AI 零基础到实战》的第 2 节!
在上一篇中,我们明确了 Spring AI 是Spring生态的Java开发者在 AI 时代的破局首选。但万丈高楼平地起,在让 AI 替我们“思考”之前,我们需要先搭建好坚实的开发地基。
许多初学大模型的开发者,往往会陷入“底层造轮子”的泥潭:手动封装 HTTP 请求、死磕 JSON 序列化、处理复杂的网络超时……但在 Spring 生态中,这些脏活累活早就被极致优雅地屏蔽了。
今天,我们将从零开始,揭开 Spring Boot 自动装配(Auto-Configuration) 在 AI 领域的魔法。带你跑通属于你的第一个大模型 Hello World!
本节章节目标
- 环境搭建:掌握 Spring AI 项目的初始化与核心依赖引入。
- 安全与解耦:告别明文硬编码,实现一套代码无缝切换 OpenAI 与 DeepSeek。
- 降维打击:全面对比底层的
ChatModel与现代的ChatClient,理解 Spring 的抽象哲学。 - 点亮 AI:使用
ChatClient.builder()敲下你的第一行 AI 代码,完成基础对话。
Spring AI 的自动装配流转
在动手写代码前,我们先通过下面这数据流图,直观地理解:当我们引入依赖和配置 YAML 后,Spring 容器内部到底发生了什么数据的“暗流涌动”?

环境搭建
首先,我们需要在 Spring Initializr 或IDEA中初始化一个标准的 Spring Boot 项目。前置要求: JDK 17+、Spring Boot 3.5.9。
在 pom.xml 中引入核心依赖。
<!-- web依赖--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency><!-- openai依赖 --><dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-starter-model-openai</artifactId></dependency></dependencies>
安全配置与 API-Key 密钥管理
配置大模型,本质上就是告诉 Spring Boot 两件事:“我是谁(API Key 密钥)” 和 “我要连谁(Base URL + Model 模型名称)”。
打开 src/main/resources/application.yml 进行如下配置:
spring: ai: openai: # 网关地址 base-url: https://api.openai-hk.com # 密钥认证:使用变量 api-key: ${OPEN_AI_API_KEY} chat: # 指定调用的模型名称 gpt-5.4 options: model: gpt-5.4
**生产级安全警告:**永远、永远、永远不要把 API Key 明文写在代码里并提交到 Git!这会导致你的账户余额被盗刷。
因此,我们在 YAML 中写成 ${OPEN_AI_API_KEY},并在启动项目时通过系统环境变量动态注入:
- 本地开发时:点击右上角启动项的
Edit Configurations-> 找到Environment variables-> 添加AI_API_KEY=密钥。 - 服务器 Linux 部署时:运行命令
export AI_API_KEY="真实密钥" && java -jar app.jar。
由于特殊原因,我们在测试的过程中选择了GPT的中转站来进行测试,如果测试GPT的话可以使用https://openai-hk.com/?i=54761购买
核心 API ChatModel vs ChatClient
传统的 Java 开发中,如果你要调用大模型,你需要手动引入 HTTP 客户端(如 OkHttp),手动写 JSON 序列化,手动处理流式 SSE 断开重连问题。但在 Spring AI 中,一切都由**自动装配(Auto-Configuration)**默默完成了,它会自动帮你做以下事情:
- 初始化底层的 RestClient 或 WebClient。
- 将配置的 base-url、api-key 自动塞到 HTTP 请求头(Header)中。
- 自动向 Spring IOC 容器中注入最核心的 Bean:
ChatModel(OpenAiChatAutoConfiguration) 和ChatClient.Builder(ChatClientAutoConfiguration)。
这意味着,引入依赖,加入配置后我们可以直接使用相关bean进行大模型调用。如下是针对:ChatModel 和 ChatClient的功能对比
| 对比维度 | ChatModel (底层基石) |
ChatClient (现代利器) |
|---|---|---|
| 设计定位 | 底层模型通信的核心接口 | 高层应用构建器(基于 ChatModel 封装) |
| 功能扩展 | 弱 | **Fluent Builder (链式调用)**,专为现代业务开发设计。内置 Advisor 机制(如对话历史管理、RAG) |
| 结构化输出 | 需手动解析响应文本 | 支持自动映射为 Java 对象(如 entity(User.class)) |
| 适用场景 | 实现简单功能和场景 | 日常业务开发(99%的场景) ,支持 RAG 数据增强、历史记忆挂载等高级特性。 |
**一句话总结:ChatModel 是汽车的发动机,而 ChatClient 才是给驾驶员用的方向盘。**在实际开发我们直接选用ChatClient 即可
与GPT5.4的第一次对话
让我们直接通过一个标准的 Spring MVC Controller,来完成与大模型的第一次对话,同时体验ChatModel 和 ChatClient
@RestControllerpublic class AiChatController { private final ChatModel chatModel; private final ChatClient chatClient; public AiChatController(ChatModel chatModel, ChatClient.Builder chatClientBuilder) { this.chatModel = chatModel; this.chatClient = chatClientBuilder.build(); } /** * 使用ChatModel访问 * @param message * @return */ @GetMapping("/api/chat-model") public String simpleChatModel(@RequestParam String message) { return this.chatModel.call(message); } /** * 使用ChatClient访问 * @param message * @return */ @GetMapping("/api/chat-client") public String simpleChatClient(@RequestParam String message) { return this.chatClient .prompt() // 1. 初始化对话请求流 .user(message) // 2. 传入我们要发送给大模型的文本 .call() // 3. 发送网络请求,同步等待大模型响应 .content(); // 4. 提取大模型返回的纯文本正文内容 }}
启动你的 Spring Boot 项目,打开浏览器分别访问:http://localhost:8080/api/chat-model?message=讲一个关于程序员的冷笑话
http://localhost:8080/api/chat-client?message=讲一个关于程序员的冷笑话
稍等片刻,如果你的控制台没有报错,浏览器中顺利返回了由大模型生成的幽默文本,那么恭喜你——你已经正式跨入了 AI Native 开发的大门!
与Deepseek的第一次对话
切换至deepseek对话,我们需要做如下两件事(其他地方不需要任何改动):
- 替换
spring-ai-starter-model-openai依赖为spring-ai-starter-model-deepseek - 替换YML配置如下
spring: ai: openai: # 网关地址:由于各种原因,我们选择使用中转站的方式来体验OpenAI的API base-url: https://api.openai-hk.com # 密钥认证:使用变量 api-key: ${OPEN_AI_API_KEY} chat: # 指定调用的模型名称 gpt-5.4 options: model: gpt-5.4 deepseek: api-key: ${DEEPSEEK_API_KEY} model:# 指定主模型 chat: deepseek
需要注意,如果配置了多个模型,那么spring.ai.model.chat需要指定现在哪个是Primary模型,否则启动会报错如下:
Parameter 0 of constructor in com.uka.springai.demo001.AiChatController required a single bean, but 2 were found: - deepSeekChatModel: defined by method 'deepSeekChatModel' in class path resource [org/springframework/ai/model/deepseek/autoconfigure/DeepSeekChatAutoConfiguration.class] - openAiChatModel: defined by method 'openAiChatModel' in class path resource [org/springframework/ai/model/openai/autoconfigure/OpenAiChatAutoConfiguration.class]
除了使用付费的大模型,我们还可以使用ollama部署本地模型。大家可以自行测试看看。使用规则和上述一致
总结
本节课,我们完成了从 0 到 1 的实质性跨越。 依靠 Spring Boot 强大的自动装配机制,我们成功避开了底层网络通信的泥潭,实现了一套**“配置驱动、厂商解耦”**的健壮架构。同时,我们掌握了企业级 API 密钥的安全管理规范,明确了 ChatClient 在现代 AI 开发中的核心地位,并用极简的代码跑通了基础的对话流。
现在,大模型已经能听懂我们的话了。但在真实的世界里,大模型不是只有一个简单的“输入框”。
下节预告
为什么别人的 AI 扮演的“客服”那么专业,而你的 AI 总是答非所问? 在刚才的代码中,.user(message) 到底意味着什么?
在 第 3 节:《给大模型立人设!揭秘 System/User 对话角色》 中,你将学到:
- 认知升级:深度剖析大模型通信底层的三大基本角色(System / User / Assistant)。
- LLM模型参数:大模型常用参数解析,让你的模型更有个性化。
我们的硬核之旅,才刚刚开始。下节见!
这里给大家精心整理了一份全面的AI大模型学习资源,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享!
👇👇扫码免费领取全部内容👇👇
1. 成长路线图&学习规划
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
这里,我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。
2. 大模型经典PDF书籍
书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。(书籍含电子版PDF)

3. 大模型视频教程
对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识。

4. 2026行业报告
行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。

5. 大模型项目实战
学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。

6. 大模型面试题
面试不仅是技术的较量,更需要充分的准备。
在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。

7. 资料领取:全套内容免费抱走,学 AI 不用再找第二份
不管你是 0 基础想入门 AI 大模型,还是有基础想冲刺大厂、了解行业趋势,这份资料都能满足你!
现在只需按照提示操作,就能免费领取:
👇👇扫码免费领取全部内容👇👇
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)