# spring-ai-examples
**Repository Path**: dickeryang/spring-ai-examples
## Basic Information
- **Project Name**: spring-ai-examples
- **Description**: spring AI 专栏项目示例代码
- **Primary Language**: Java
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-04-01
- **Last Updated**: 2026-04-27
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Spring AI 企业级应用开发实战
**《Spring AI 企业级应用开发实战:从零基础到 AI 架构师的完整成长路径》配套代码仓库**
[](https://openjdk.java.net/)
[](https://spring.io/projects/spring-boot)
[](https://spring.io/projects/spring-ai)
[](LICENSE)
[](#-连载状态)
📚 **本专栏共 53 篇,系统讲解 Spring AI 从入门到企业级架构的完整技能体系**
---
## 📖 专栏简介
### 🎯 专栏定位
本专栏面向**Java 开发者、后端工程师和企业级应用开发者**,提供从**Spring AI 零基础到生产级 AI 架构师**的完整技能体系。
通过系统性、实战性的内容设计,涵盖 **Spring AI 框架核心**、**RAG 知识库构建**、**Agent 智能体开发**、**向量数据库集成**、**大模型
API 调用**、**企业级架构设计**等核心主题,助力开发者实现从**传统 Java 开发到 AI 架构师**的技能跃迁。
### ✨ 核心价值
✅ **系统性知识体系**: 从 Spring AI 基础到企业级架构,形成完整的 AI 开发知识闭环
✅ **实战导向**: 每篇文章都包含企业级真实场景的代码实践,提供可直接落地的解决方案
✅ **前沿技术**: 跟踪 Spring AI 最新发展,保持内容的前沿性和实用性
✅ **架构思维**: 培养 AI 应用架构设计能力,从代码层面提升到系统架构层面
✅ **职业发展**: 掌握企业急需的 AI 技能,提升职场竞争力,实现薪资跃迁
### 📊 专栏统计
| 指标 | 数据 |
|------------|----------------------|
| **文章总数** | 53 篇 |
| **代码示例** | 100+ 个完整示例 |
| **实战项目** | 10+ 个综合项目 |
| **配置文件** | 20+ 个生产级配置 |
| **预计学习时长** | 20-25 周(每周 10-15 小时) |
| **完成进度** | 🔄 连载中 |
### 🎯 目标读者
1. **开发初学者**: 有 Java 和 Spring Boot 基础,想系统学习 Spring AI 开发技能,构建智能化应用
2. **1-3 年经验**: 希望系统提升 AI 应用能力,掌握 RAG、Agent 等核心技术,向 AI 工程师方向发展
3. **3-5 年经验**: 寻求技术突破,向 AI 架构师方向发展,需要掌握企业级 AI 应用架构设计和性能优化
4. **技术管理者**: 需要了解 AI 技术栈选型、团队技术升级路径,制定 AI 转型战略
---
## 🚀 快速开始
### 📋 环境要求
```bash
- JDK 17+
- Maven 3.6+
- OpenAI API Key 或 阿里云 DashScope API Key
```
### 💻 安装步骤
#### 1. 克隆项目
```bash
cd /Users/dickeryang/deploy/java/spring-ai/spring-ai-examples
```
#### 2. 编译项目
```bash
mvn clean package -DskipTests
```
✅ **编译成功标志:**
```
BUILD SUCCESS
Replacing main artifact with repackaged archive
```
#### 3. 配置 API Key
**方式一:使用环境变量(推荐)**
```bash
# OpenAI API Key
export OPENAI_API_KEY=sk-your-openai-api-key-here
# 或使用通义千问(推荐国内用户)
export DASHSCOPE_API_KEY=sk-your-dashscope-api-key
```
**方式二:修改配置文件**
编辑 `spring-ai-examples/src/main/resources/application.yml`:
```yaml
spring:
ai:
openai:
api-key: sk-your-openai-api-key-here
dashscope:
api-key: sk-your-dashscope-api-key
```
#### 4. 启动应用
```bash
java -jar target/spring-ai-examples-1.0.0.jar
```
启动成功后会看到:
```
Tomcat started on port 8080 (http) with context path ''
Started SpringAiExamplesApplication in 4.168 seconds
初始化 ChatClient
```
---
## 📡 API 接口测试
项目提供以下 RESTful API 接口:
### 1. 简单聊天接口(GET)
**请求:**
```bash
curl -G --data-urlencode "message=Hello" "http://localhost:8080/api/chat"
```
**响应:**
```json
{
"reply": "Hello! How can I assist you today?",
"costTime": 1250
}
```
### 2. 高级聊天接口(POST)
**请求:**
```bash
curl -X POST http://localhost:8080/api/chat/send \
-H "Content-Type: application/json" \
-d '{
"message": "用三句话介绍人工智能",
"systemPrompt": "你是一位专业的 AI 助手,请用简洁的语言回答",
"temperature": 0.5,
"maxTokens": 200
}'
```
**响应:**
```json
{
"request": {
"message": "用三句话介绍人工智能",
"systemPrompt": "你是一位专业的 AI 助手,请用简洁的语言回答",
"temperature": 0.5,
"maxTokens": 200
},
"reply": "人工智能是模拟人类智能的计算机系统...",
"model": "gpt-3.5-turbo",
"costTime": 1580
}
```
### 3. 上下文对话(POST)
**请求:**
```bash
curl -X POST http://localhost:8080/api/chat/context \
-H "Content-Type: application/json" \
-d '{
"messages": [
"我叫小明",
"记住了,你的名字是小明",
"你喜欢什么运动?"
]
}'
```
**响应:**
```json
{
"messagesCount": 3,
"reply": "我喜欢各种球类运动,特别是篮球和足球。你呢?",
"costTime": 1890
}
```
### 4. 多模型切换(POST)
**请求:**
```bash
curl -X POST http://localhost:8080/api/chat/model \
-H "Content-Type: application/json" \
-d '{
"message": "Hello",
"model": "qwen-max"
}'
```
**支持的模型:**
| 模型 | 提供商 | 说明 |
|-----------------|--------|------------|
| `gpt-3.5-turbo` | OpenAI | 快速、经济实惠 |
| `gpt-4` | OpenAI | 最强性能 |
| `qwen-max` | 通义千问 | 国产大模型,中文优化 |
| `qwen-plus` | 通义千问 | 性价比之选 |
**响应:**
```json
{
"model": "qwen-max",
"reply": "Hello! How can I assist you today?",
"costTime": 2100
}
```
### 5. 健康检查
```bash
curl http://localhost:8080/api/chat/health
```
**响应:** `OK`
---
## 🏗️ 项目结构
```
spring-ai-examples/
├── src/main/java/com/example/springai/
│ ├── SpringAiExamplesApplication.java # 主启动类
│ ├── client/
│ │ └── OpenAiClient.java # 统一 API 客户端
│ ├── config/
│ │ ├── AiConfig.java # Spring AI 配置
│ │ └── OpenAiProperties.java # OpenAI 配置属性
│ ├── controller/
│ │ └── ChatController.java # REST 控制器
│ └── service/
│ └── ChatService.java # 业务逻辑层
├── src/main/resources/
│ └── application.yml # 配置文件
├── pom.xml # Maven 配置
└── README.md # 项目文档
```
---
## 💡 核心代码解析
### 1. ChatClient 使用(OpenAiClient.java)
```java
@Component
@RequiredArgsConstructor
public class OpenAiClient {
private final ChatClient chatClient;
/**
* 简单对话
*/
public String chat(String message) {
log.info("收到消息:{}", message);
long startTime = System.currentTimeMillis();
try {
String response = chatClient.prompt()
.user(message)
.call()
.content();
long costTime = System.currentTimeMillis() - startTime;
log.info("AI 回复:{} (耗时:{}ms)", response, costTime);
return response;
} catch (Exception e) {
log.error("AI 调用失败:{}", e.getMessage(), e);
throw new RuntimeException("AI 服务调用失败:" + e.getMessage(), e);
}
}
/**
* 上下文对话
*/
public String chatWithContext(List messages) {
log.info("上下文对话,消息数:{}", messages.size());
try {
StringBuilder promptBuilder = new StringBuilder();
for (int i = 0; i < messages.size(); i++) {
String role = (i % 2 == 0) ? "User" : "Assistant";
promptBuilder.append(role)
.append(": ")
.append(messages.get(i))
.append("\n");
}
return chatClient.prompt()
.user(promptBuilder.toString())
.call()
.content();
} catch (Exception e) {
log.error("上下文对话失败:{}", e.getMessage(), e);
throw new RuntimeException("上下文对话失败:" + e.getMessage(), e);
}
}
}
```
### 2. Bean 配置(AiConfig.java)
```java
@Configuration
public class AiConfig {
private final OpenAiChatModel openAiChatModel;
@Bean
public ChatClient chatClient() {
log.info("初始化 ChatClient");
return ChatClient.builder(openAiChatModel).build();
}
}
```
### 3. 配置属性类(OpenAiProperties.java)
```java
@Data
@Configuration
@ConfigurationProperties(prefix = "spring.ai.openai")
public class OpenAiProperties {
private String apiKey;
private final String model = "gpt-3.5-turbo";
private final Double temperature = 0.7;
}
```
---
## 🔧 常见问题 FAQ
### Q1: 编译失败,找不到 Spring AI 依赖
**问题:** `Could not resolve dependencies for project`
**解决:**
1. 确保 POM 中添加了 Spring Milestones 仓库
2. 使用正确的版本号(1.0.0-M6)
```xml
spring-milestones
https://repo.spring.io/milestone
```
### Q2: 启动失败,缺少 ChatClient Bean
**问题:** `No qualifying bean of type 'ChatClient' available`
**解决:** 确保创建了 `AiConfig` 配置类并正确注入 `OpenAiChatModel`
### Q3: API 调用超时
**问题:** `Operation timed out`
**解决:**
1. 检查网络连接
2. 如在国内,建议使用通义千问模型
3. 配置代理:
```yaml
spring:
ai:
openai:
base-url: https://api.openai.com/v1
proxy:
host: your-proxy-host
port: 7890
```
### Q4: 如何切换到通义千问?
**方法:** 修改配置文件:
```yaml
spring:
ai:
dashscope:
api-key: ${DASHSCOPE_API_KEY}
chat:
options:
model: qwen-max
```
然后修改代码使用 `DashscopeChatModel` 替代 `OpenAiChatModel`
### Q5: 如何降低 Token 消耗?
**建议:**
1. 设置 `maxTokens` 限制输出长度
2. 调低 `temperature` 参数(0.3-0.5)
3. 精简 Prompt,避免过长的上下文
4. 使用缓存策略,避免重复调用
---
## 📊 性能优化建议
### 1. 连接池配置
```yaml
spring:
ai:
openai:
connection-pool:
enabled: true
max-total: 50
max-per-route: 10
```
### 2. 缓存策略
在 Service 层添加 Redis 缓存:
```java
@Service
public class ChatService {
@Cacheable(value = "chatCache", key = "#message")
public String chat(String message) {
return openAiClient.chat(message);
}
}
```
### 3. 限流保护
```java
@Service
public class ChatService {
@RateLimiter(name = "chatLimiter", fallbackMethod = "chatFallback")
public String chat(String message) {
return openAiClient.chat(message);
}
}
```
---
## 🛠️ 技术栈
### 后端核心技术
```
核心框架:Spring Boot 3.x + Spring Framework 6.x + Spring AI 1.x
AI 框架:Spring AI + LangChain4j + Semantic Kernel
大模型 API: OpenAI GPT-4/3.5 + Anthropic Claude + Azure OpenAI + 通义千问
向量数据库:Redis Vector + Pinecone + Milvus + Weaviate + pgvector
数据访问:Spring Data JPA + MyBatis-Plus + Redis Template
缓存中间件:Redis 7.x + Caffeine + Redisson
消息队列:RabbitMQ + Kafka + RocketMQ
搜索引擎:Elasticsearch 8.x + OpenSearch
```
### 基础设施与 DevOps
```
数据库:MySQL 8.0 + PostgreSQL 15+ + MongoDB 7.x
容器化:Docker 24.x + Kubernetes 1.28+ + Helm 3.x
CI/CD: Jenkins 2.x + GitLab CI + GitHub Actions
监控告警:Prometheus 2.x + Grafana 10.x + SkyWalking
日志系统:ELK Stack (Elasticsearch + Logstash + Kibana) + Loki
API 网关:Kong + APISIX + Spring Cloud Gateway
服务网格:Istio 1.19+ + Linkerd
```
### 配套工具链
```
开发工具:IntelliJ IDEA 2024.x + VS Code + Cursor
构建工具:Maven 3.9.x + Gradle 8.x
版本控制:Git 2.x + GitFlow + GitHub/GitLab
测试工具:JUnit 5 + Mockito + Testcontainers + Postman
调试工具:Arthas + VisualVM + JProfiler
AI 辅助:GitHub Copilot + Cursor + Codeium
```
---
## 💡 学习收获
通过本专栏学习,你将掌握:
✅ **Spring AI 框架**: 熟练使用 Spring AI 开发 AI 应用,掌握 ChatModel、Function Calling 等核心 API
✅ **RAG 技术栈**: 从零构建企业级知识库系统,掌握文档处理、向量化、检索优化全流程
✅ **Agent 开发**: 设计自主规划的 AI 智能体,掌握任务分解、工具调用、多 Agent 协作
✅ **架构设计**: 设计高可用、高性能的企业级 AI 应用架构,掌握微服务、监控、安全等核心能力
✅ **性能优化**: LLM 成本优化、检索加速、并发处理,打造生产级 AI 系统
✅ **前沿视野**: 了解多模态 AI、AI 原生应用等前沿技术,保持技术敏感度
---
## 📈 职业发展
### 能力提升
- ✅ **AI 工程化能力**: 能够将 AI 模型转化为可用的软件系统
- ✅ **架构设计思维**: 从代码层面提升到系统架构层面
- ✅ **性能优化技能**: 具备性能分析和调优能力
- ✅ **团队协作能力**: 掌握 AI 项目的团队协作和版本管理
- ✅ **问题解决能力**: 建立完整的问题诊断和解决思维
### 职业机会
- 💼 **AI 工程师**: 掌握企业急需的 AI 开发技能,薪资涨幅 30-50%
- 📈 **架构师**: 具备 AI 系统架构设计能力,向技术专家方向发展
- 🎓 **技术顾问**: 为企业提供 AI 转型咨询和技术培训
- 🚀 **创业者**: 利用 AI 技术创新,孵化自己的产品和服务
---
## 📝 开发计划
本专栏正在连载中,源代码和文章将持续更新:
- [x] ✅ 完成专栏内容规划(53 篇)
- [ ] 🔄 第一部分:Spring AI 基础入门与环境搭建(第 001-010 篇)
- [ ] ⏳ 第二部分:RAG 知识库构建核心技术(第 011-025 篇)
- [ ] ⏳ 第三部分:Agent 智能体开发与复杂应用(第 026-040 篇)
- [ ] ⏳ 第四部分:企业级架构设计与性能优化(第 041-050 篇)
- [ ] ⏳ 第五部分:前沿技术与综合实战(第 051-053 篇)
### 配套资源
- 📂 **GitHub 仓库**: 提供完整源代码和示例项目
- 📖 **CSDN 专栏**: 《Spring AI 企业级应用开发实战》系列文章
- 💬 **技术交流群**: 加微信加入 Spring AI 学习社群
- 🎁 **福利资源**: Spring AI 速查手册、RAG 架构图集、Prompt 模板库
---
## 👨💻 作者信息
**行者·全栈架构师**
- CSDN 博客专家
- 专注 Spring 生态、微服务架构、AI 应用开发
- 微信公众号:【行者架构谈】
- 专栏创建时间:2026-04-01
- 预计完结时间:2026-09-30(连载中)
---
## 📄 开源协议
Apache License 2.0
---
**如果这个项目对你有帮助,请给一个 ⭐ Star!**
**🔥 53 篇干货,助你成为 AI 时代的技术领袖!**
**欢迎关注公众号获取更多技术干货**
[](javascript:void(0))
[](https://blog.csdn.net/qq_35366330?type=blog)
**🎉 开启 Spring AI 学习之旅!**
立即订阅,不错过任何一篇精彩内容!