Java AI开发实战:Spring AI完全指南
2026年Spring AI 2.0 正式发布,Java生态终于迎来原生AI基础框架。本文聚焦Java开发者如何利用Spring AI快速接入大模型,涵盖: 与LangChain4j 选型对比、20+模型无缝切换、ChatClient极简API、结构化输出、RAG企业知识库、Function Calling业务等核心能力。提供5分钟快速上手教程及企业级最佳实践, 适合想快速入门Java AI开发的
·
2026年Java AI开发实战:Spring AI完全指南
从手动写HTTP到自动配置,Java开发者如何用Spring AI玩转大模型
一、写在前面
Java调大模型,终于不用手写HTTP了。
2026年,Spring AI 2.0 正式发布,Java生态终于有了原生、AI友好的AI集成框架。
本文将带你:
- 理解Spring AI的核心概念
- 掌握Spring AI vs LangChain4j选型
- 快速上手第一个AI应用
- 了解企业级最佳实践
二、为什么Java开发者需要关注Spring AI
1.1 曾经的痛
以前用Java调GPT、Claude:
- 要么手写OkHttp/RestTemplate拼JSON
- 要么用非官方SDK担心跑路
- 切换模型要从代码到配置全改一遍
1.2 Spring AI的到来
| 对比项 | 手写HTTP | Python openai库 | Spring AI |
|---|---|---|---|
| 接入成本 | 高 | 低(3行) | 低(3行配置) |
| 类型安全 | 无 | 无 | 有(编译期检查) |
| 切换模型 | 改一堆代码 | 改参数 | 改一行配置 |
| 流式响应 | 手动处理SSE | 简单 | Flux原生支持 |
| Spring集成 | 自己搞 | 不存在 | 原生(DI/AOP) |
1.3 2026年技术格局
┌─────────────────────────────────────────────────────────┐
│ Java AI 开发框架 (2026) │
├─────────────────────────────────────────────────────────┤
│ Spring AI 2.0 │ LangChain4j │
│ • Spring官方背书 │ • 框架无关性 │
│ • 20+模型支持 │ • 15+模型支持 │
│ • Spring Boot深度集成 │ • Quarkus/SE都能跑 │
│ • M4里程碑版本 │ • 生产就绪 │
└─────────────────────────────────────────────────────────┘
三、Spring AI 2.0 核心特性
3.1 统一多模型接入

Spring AI 2.0 支持20+模型提供商:
| 厂商 | 模型 | 特点 |
|---|---|---|
| OpenAI | GPT-5.4 | 业界标杆 |
| Anthropic | Claude Opus 4.6 | 编程最强 |
| Gemini 3 Pro | 多模态 | |
| 阿里 | Qwen3.5 | 国产之光 |
| Ollama | 本地模型 | 隐私合规 |
一行配置切换模型:
spring.ai.openai.base-url=https://api.openai.com
spring.ai.openai.api-key=${OPENAI_API_KEY}
# 切换只需改这一行
spring.ai.openai.base-url=https://api.anthropic.com
3.2 ChatClient:极简API
@RestController
class AIController {
private final ChatClient chatClient;
// 注入即可用
public AIController(ChatClient chatClient) {
this.chatClient = chatClient;
}
@GetMapping("/chat")
public String chat(@RequestParam String message) {
return chatClient.prompt()
.user(message)
.call()
.content();
}
}
3.3 结构化输出:告别JSON解析
// AI直接返回Java对象
record WeatherResponse(
String city,
int temperature,
String condition
) {}
WeatherResponse weather = chatClient.prompt()
.user("北京今天天气怎么样?")
.call()
.entity(WeatherResponse.class);
System.out.println(weather.city()); // 北京
System.out.println(weather.temperature()); // 25
3.4 RAG:企业知识库
@Bean
public vectorStore vectorStore() {
return new PgVectorStore(jdbcTemplate, embeddingModel);
}
@Bean
public ChatClient ragChatClient(ChatClient.Builder builder,
VectorStore vectorStore) {
return builder
.defaultSystem("你是一个专业助手")
.defaultAdvisors(
new RetrieveAdvisor(vectorStore)
.asAii()
)
.build();
}
3.5 Function Calling:打通业务
@Tool(description = "查询商品库存")
public int getProductStock(String productId) {
return productRepository.findById(productId)
.map(p -> p.getStock())
.orElse(0);
}
ChatResponse response = chatClient.prompt()
.user("帮我查下SKU-12345还有多少库存?")
.tools(new ToolCallbackProvider<>(this))
.call()
.chatResponse();
四、选型指南:Spring AI vs LangChain4j
4.1 核心对比

| 维度 | Spring AI 2.0 | LangChain4j |
|---|---|---|
| 定位 | Spring生态"嫡长子" | Java AI"瑞士军刀" |
| 框架依赖 | 必须Spring Boot | 框架无关 |
| 模型支持 | 20+ | 15+ |
| 向量数据库 | 10+ | 15+ |
| 启动速度 | 200-400ms | <100ms(Quarkus) |
| 内存占用 | 150-300MB | 50-100MB |
4.2 选型决策树
你的项目用Spring Boot吗?
│
├── 是 → 追求稳定性 → Spring AI
│
└── 否 → 追求灵活性 → LangChain4j
追求快速启动(Serverless)?
│
├── 是 → LangChain4j + Quarkus
│
└── 否 → 两者皆可
需要混合部署?
│
├── 是 → 核心:Spring AI + 创新:LangChain4j
│
└── 否 → 根据团队熟悉度选择
4.3 2026年趋势
- MCP协议成为标准:工具调用将标准化
- 多模态成企业刚需:PDF图表处理能力
- 本地模型爆发:Ollama+远程混合部署
五、快速上手:5分钟跑通第一个AI应用

5.1 项目创建
访问 start.spring.io,选择:
Spring Boot: 3.5.x
Java: 21
Dependencies:
- Spring Web
- Spring AI OpenAI
5.2 配置
# application.yml
spring:
ai:
openai:
api-key: ${OPENAI_API_KEY}
chat:
options:
model: gpt-4o-mini
5.3 代码
@SpringBootApplication
public class AiApplication {
public static void main(String[] args) {
SpringApplication.run(AiApplication.class, args);
}
}
@RestController
class ChatController {
private final ChatClient chatClient;
public ChatController(ChatClient.Builder builder) {
this.chatClient = builder.build();
}
@GetMapping("/chat")
public String chat(@RequestParam String message) {
return chatClient.prompt()
.user(message)
.call()
.content();
}
}
5.4 运行
curl "localhost:8080/chat?message=用Java怎么调AI?"
六、企业级最佳实践
6.1 多模型切换
@Configuration
class AIConfig {
@Bean
@Primary
public ChatClient primaryChatClient(
@Value("${ai.primary.model}") String model,
ChatClient.Builder builder) {
return builder.defaultSystem(p -> p.text("你是一个专业助手"))
.build();
}
@Bean
public ChatClient codeChatClient(
@Value("${ai.code.model:claude-opus}") String model,
ChatClient.Builder builder) {
return builder.defaultSystem(p -> p.text("你是一个编程专家"))
.build();
}
}
6.2 流式响应
@GetMapping(value = "/stream", produces = MediaType.TEXT_EVENT_STREAM)
public Flux<String> streamChat(@RequestParam String message) {
return chatClient.prompt()
.user(message)
.stream()
.content();
}
6.3 错误处理
@Bean
public ChatClient chatClient(ChatClient.Builder builder) {
return builder
.defaultSystem(p -> p.text("你是一个专业助手"))
.defaultErrorHandler(exception ->
Flux.just("抱歉,AI服务暂时不可用:" + exception.getMessage()))
.build();
}
七、总结与展望
7.1 核心要点
✅ Spring AI让Java AI开发像调用本地服务一样简单
- 零学习成本:会Spring Boot就会Spring AI
- 一套配置通吃:20+模型无缝切换
- 生产就绪:流式/结构化输出/重试机制全内置
7.2 学习路线
第1周:Spring AI Hello World
↓
第2周:RAG知识库实战
↓
第3周:Function Calling业务集成
↓
第4周:生产环境部署与监控
7.3 资源
- 官网:spring.io/projects/spring-ai
- 文档:docs.spring.io/spring-ai/reference
- 示例:github.com/spring-projects/spring-ai
更多推荐



所有评论(0)