news 2026/5/1 6:16:05

SpringBoot+SpringAI实战:30分钟搭建你的第一个智能应用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SpringBoot+SpringAI实战:30分钟搭建你的第一个智能应用

SpringAI是Spring生态下的一个全新项目,核心目标是为Java开发者提供一套简单、统一的API,快速集成各类AI大模型能力,无需关注不同厂商API的差异。

核心优势:
统一API:对接不同大模型无需修改核心代码,切换模型像切换数据源一样简单
开箱即用:内置请求重试、超时控制、响应缓存等常用功能,减少重复编码
无缝集成Spring生态:完美兼容SpringBoot、Spring Cloud等,符合Java开发者的使用习惯
支持多场景:涵盖文本对话、图片生成、语音转文字、embedding向量生成等主流AI场景

本次实战我们以“对接OpenAI的ChatGPT模型”为例,开发一个简单的智能对话接口。后续会补充如何切换到国内大模型(如通义千问)。前置准备
JDK 17+(SpringAI部分特性依赖JDK 17)
Maven 3.6+
一个OpenAI API Key(从OpenAI官网申请,注意保存好,后续配置用)
开发工具:IDEA(推荐)

项目创建与依赖配置

使用Spring Initializr创建项目,选择Spring Boot 3.2.5版本,添加spring-boot-starter-web和Lombok依赖。手动在pom.xml中添加SpringAI OpenAI Starter:

<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-openai-spring-boot-starter</artifactId><version>0.8.1</version></dependency>

配置文件设置

application.yml中配置OpenAI参数,建议将API Key存储在环境变量中:

spring:ai:openai:api-key:${OPENAI_API_KEY}chat:model:gpt-3.5-turbotemperature:0.7

核心代码实现

DTO层设计
@DatapublicclassChatRequest{@NotBlankprivateStringmessage;}@Data@BuilderpublicclassChatResponse{privateIntegercode;privateStringmsg;privateStringcontent;}
服务层实现
@Service@RequiredArgsConstructorpublicclassChatServiceImplimplementsChatService{privatefinalChatClientchatClient;@OverridepublicChatResponsechat(ChatRequestrequest){try{Stringresponse=chatClient.call(request.getMessage());returnChatResponse.builder().code(200).msg("Success").content(response).build();}catch(Exceptione){returnChatResponse.builder().code(500).msg(e.getMessage()).content("").build();}}}
控制层优化
@RestController@RequestMapping("/api/ai")@RequiredArgsConstructorpublicclassChatController{privatefinalChatServicechatService;@PostMapping("/chat")publicResponseEntity<ChatResponse>chat(@Valid@RequestBodyChatRequestrequest){returnResponseEntity.ok(chatService.chat(request));}}

异常处理增强

添加全局异常处理器:

@ControllerAdvicepublicclassGlobalExceptionHandler{@ExceptionHandler(Exception.class)publicResponseEntity<ChatResponse>handleException(Exceptione){returnResponseEntity.status(500).body(ChatResponse.builder().code(500).msg(e.getMessage()).build());}}

测试验证

创建测试类验证功能:

@SpringBootTest@AutoConfigureMockMvcclassChatControllerTest{@AutowiredprivateMockMvcmockMvc;@TestvoidtestChatEndpoint()throwsException{Stringrequest="{\"message\":\"Java有哪些特性?\"}";mockMvc.perform(post("/api/ai/chat").contentType(MediaType.APPLICATION_JSON).content(request)).andExpect(status().isOk()).andExpect(jsonPath("$.code").value(200));}}

性能优化建议

添加连接池配置提升性能:

spring:ai:openai:client:connect-timeout:5000read-timeout:30000

安全增强

建议在Controller添加速率限制:

@RateLimiter(value=10)// 每秒10次请求@PostMapping("/chat")publicResponseEntity<ChatResponse>chat(@Valid@RequestBodyChatRequestrequest){// ...}

国内模型切换示例

若要切换至通义千问,只需修改依赖和配置:

<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-qwen-spring-boot-starter</artifactId><version>0.8.1</version></dependency>

对应配置调整为:

spring:ai:qwen:api-key:${QWEN_API_KEY}chat:model:qwen-turbo
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 2:57:06

LoRaWAN 协议解析:为什么它成为低功耗物联网项目的常见底座选择?

在智慧能源、智慧水务、环境监测、园区与城市感知等项目中&#xff0c;一个趋势正在反复出现&#xff1a; 接入的设备越来越多&#xff0c;但每个设备的数据量却很小&#xff0c;而且必须长期、稳定、低成本运行。 在大量实际项目里&#xff0c;常见的设备类型包括&#xff1a;…

作者头像 李华
网站建设 2026/4/22 11:42:30

Rust 1.92.0 发布:Never Type 进一步稳定

Rust 团队发布了 1.92.0 版本。这次的更新主要集中在语言一致性、编译检查严格度以及调试体验的优化上。 以下是本次更新的技术要点解析。 Never Type (!) 稳定性推进 Rust 致力于将 !&#xff08;never type&#xff09;完全稳定化&#xff0c;使其成为真正的类型。为了达成这…

作者头像 李华
网站建设 2026/4/23 15:21:27

Qwen2.5-7B能否处理复杂逻辑?结构化输出实战验证

Qwen2.5-7B能否处理复杂逻辑&#xff1f;结构化输出实战验证 1. 引言&#xff1a;为何关注Qwen2.5-7B的逻辑与结构化能力&#xff1f; 随着大模型在企业级应用中的深入&#xff0c;能否准确理解并生成结构化数据&#xff0c;已成为衡量其工程价值的关键指标。尤其是在金融风控…

作者头像 李华
网站建设 2026/4/24 2:09:44

Crypto Driver预配置与BSWMD交付:一场汽车软件模块的“精准装配艺术”

引言&#xff1a;当加密模块遇见汽车电子——一个看似简单却暗藏玄机的技术命题 想象一下&#xff0c;您正在组装一台精密的汽车发动机。每个零件都有特定的尺寸、材质和安装位置&#xff0c;如果供应商送来的零件没有附带详细的装配说明书和参数配置&#xff0c;整个装配线将陷…

作者头像 李华
网站建设 2026/4/17 23:33:14

Qwen2.5-7B内容创作:自动生成高质量文章

Qwen2.5-7B内容创作&#xff1a;自动生成高质量文章 1. 技术背景与核心价值 随着大语言模型在内容生成、代码辅助、多语言翻译等场景的广泛应用&#xff0c;对模型知识广度、推理能力、结构化输出支持的要求日益提升。阿里云推出的 Qwen2.5-7B 正是在这一背景下发布的高性能开…

作者头像 李华
网站建设 2026/4/18 19:07:49

为什么Qwen2.5-7B网页推理总失败?GPU适配部署教程是关键

为什么Qwen2.5-7B网页推理总失败&#xff1f;GPU适配部署教程是关键 在大模型落地实践中&#xff0c;很多开发者都遇到过“本地能跑通&#xff0c;网页服务一调用就崩溃”的问题。尤其是像 Qwen2.5-7B 这类参数量高达76亿的中大型语言模型&#xff0c;在网页推理场景下频繁出现…

作者头像 李华