基于Spring Boot 3.x实现大模型SSE流式通信指南
WebClient发送 POST 请求:设置目标 API 地址。:设置 API 认证。:声明期望返回 SSE 数据。:解析 API 返回的流式 JSON 数据。处理流式响应:解析 SSE 数据并返回事件。:监听前端主动断开 SSE 连接。:监听 SSE 连接终止。:异常处理。
在AI 应用开发中,流式输出(SSE,Server-Sent Events) 是一种常见的方式,特别适用于大模型的 API 调用,比如 ChatGPT, DeepSeek, GLM … 接口。SSE 允许服务器向客户端推送数据流,避免长时间阻塞请求,提高用户体验。
本篇文章基于 Spring Boot 3.x,结合 Flux(Spring WebFlux) 和 WebClient,实现 大模型 SSE 调用,并支持 OpenAI 通用格式。
技术栈
- Spring Boot 3.x:现代 Java Web 开发框架
- Spring WebFlux:响应式 Web 框架,支持非阻塞 I/O
- WebClient:Spring WebFlux 提供的 HTTP 客户端,支持异步流式请求
- SSE(Server-Sent Events) :服务器推送技术,适用于流式响应
- Lombok:简化 Java 代码
- Jackson:JSON 解析库
1.项目依赖(pom.xml)
在 pom.xml 文件中,需要引入以下依赖:

2. 控制层(Controller)
ChatController 作为 RESTful API 入口,提供 SSE 方式的聊天接口。

代码解析:
@RestController:声明该类为 Spring Boot REST 控制器。@RequestMapping("/v1/chat"):定义 API 路径前缀。@PostMapping("/completions"):定义 SSE 接口,客户端发送请求后,服务器将持续推送消息。Flux<ServerSentEvent<JSONObject>>:返回SSE 事件流,适用于流式响应。
3. 业务逻辑层(Service)
ChatCompletionServiceImpl 通过 WebClient 调用大模型 API,并处理 SSE 数据流。

4. 实体类定义
ChatCompletionRequest:

Message:

Tool:

ChatCompletionResponse:

ChatChoice:

MessageResponse:

Usage:

ModelMessageUtils

代码解析:
-
WebClient发送 POST 请求baseUrl("url"):设置目标 API 地址。defaultHeader(HttpHeaders.AUTHORIZATION, "Bearer xxx"):设置 API 认证。defaultHeader(HttpHeaders.ACCEPT, MediaType.TEXT_EVENT_STREAM_VALUE):声明期望返回 SSE 数据。bodyToFlux(String.class):解析 API 返回的流式 JSON 数据。
-
处理流式响应
flatMap(data -> processResponse(data, contentBuilder, request)):解析 SSE 数据并返回事件。doOnCancel(() -> onClientCancel(contentBuilder)):监听前端主动断开 SSE 连接。doOnTerminate(this::onStreamTerminate):监听 SSE 连接终止。onErrorResume(this::handleError):异常处理。
5. SSE 响应数据处理

代码解析:
-
[DONE]处理:当 SSE 返回[DONE]时,说明流式请求结束,保存完整消息到数据库。 -
JSON 解析:
- 如果
request.getStream()为true,则获取delta.content(SSE 方式)。 - 否则,获取
message.content(普通 JSON 方式)。
- 如果
-
返回 SSE 事件:封装
ServerSentEvent,前端可实时获取消息。
6. SSE 连接管理

7. SSE 测试示例
CURL:

代码解析:
onClientCancel:前端主动关闭 SSE 连接时触发,打印已接收内容。onStreamTerminate:SSE 连接终止时触发,记录日志。
8. 结论
本教程实现了 Spring Boot 3.x + Flux + WebClient 的 SSE 调用,用于对接大模型 API,并支持 OpenAI 格式。核心亮点:
- 基于 WebFlux 的 WebClient 实现非阻塞 SSE 调用。
- 支持 OpenAI 通用格式,适配
stream和非stream模式。 - 完整的 SSE 连接管理,支持客户端取消和流终止处理。
- 数据持久化,在流式请求结束后保存完整对话内容。
写在最后:更多AI学习资料请添加学习助手领取资料礼包

视频学习资料:
从0开始开发超级AI智能体,干掉所有重复工作
- 基于字节的coze平台从0到1搭建我们自己的智能体
- 从coze到超级创业个体:2025是AI Agent大爆炸的元年!
- 搭建智能体的七大步骤:需求梳理、软件选型、提示工程、数据库、构建 UI 界面、测试评估、部署
- 你的智能体如何并行调用多个通用AI大模型?
- 实战案例:AI Agent提取小红书文案以及图像进行OCR文字识别并同步写入飞书多维表格
- 实战案例:AI Agent提取抖音爆款短视频链接中的文案,基于大模型和提示词完成符合小红书风格和作者特点的文案仿写
DeepSeek AI Agent +自动化助力企业实现 AI 改造实战
- DeepSeek 大模型的本地部署与客户端chatbox本地知识库
- 程序员的跨时代产品,AI 代码编辑器cursor深入浅出与项目构建
- 软件机器人工具影刀RPA工业化地基本使用
- 影刀RPA WEB自动化采集Boss直聘岗位信息并存储
- 影刀AI Power与DeepSeek 工作流构建影刀AI Agent
- AI HR实战:结合影刀RPA+DeepSeek AI智能体,实现智能自动招聘机器人
大模型技术+ 数字人+混剪造就副业王炸组合
- 数字人的概念与价值
- 当前数字人的时代背景
- 数字人的市场需求
- 数字人与自媒体的关系和发展路径
- 商业化数字人的变现之路
- 基于coze搭建数字人超级智能体
- 大模型技术+数字人+混剪=最强副业方向
- AI大模型与数字人造就3分钟获客300条精准线索
- AI副业接单渠道与流量变现
- 程序员开发的AI数字人实战
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)