90%的Java开发者整合大模型还在手写?SpringBoot整合大模型最牛方案:通义千问+LangChain4j+向量检索+流式输出

整合大模型,你还在手写OkHttp吗?
我见过太多项目,调用大模型的代码是这样的:手动拼JSON请求体,手动解析JSON响应,手动处理异常,手动写重试,一个简单的对话接口写了两百行样板代码。更要命的是,每个项目都复制一遍,改个API Key就上线,出了问题排查半天。
SpringBoot生态早就有成熟的starter了,引入依赖、写两行配置,直接注入Bean就能用。今天整理5个最实用的starter,覆盖大模型调用、Agent框架、向量检索、流式输出、配置管理,pom.xml直接复制,少写几百行样板代码。
本文属于Java+AI Agent落地系列,之前讲了多Agent协作框架,这些starter是快速搭建Agent项目的基础工具。
一、5个starter依赖总览
| 序号 | Starter | 用途 | 适用场景 |
|---|---|---|---|
| 1 | spring-ai-openai-spring-boot-starter | 大模型调用(OpenAI兼容接口) | 通用大模型对话、Function Calling |
| 2 | langchain4j-spring-boot-starter | Agent框架(RAG/Agent/记忆/工具) | 完整Agent应用开发 |
| 3 | milvus-sdk-java + spring-boot-starter | 向量数据库 | RAG知识库、长期记忆 |
| 4 | spring-boot-starter-webflux | 流式输出(SSE) | 大模型流式响应 |
| 5 | spring-boot-configuration-processor | 配置管理 | 大模型参数配置化 |
下面逐个讲,每个都给完整的pom依赖+配置+使用代码。
二、Starter 1:Spring AI(大模型调用)
Spring AI是Spring官方推出的AI集成框架,支持OpenAI兼容接口(通义千问、DeepSeek、智谱AI都能用),自动处理HTTP调用、JSON解析、异常重试,比手写OkHttp简洁10倍。
<!-- pom.xml -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-openai-spring-boot-starter</artifactId>
<version>1.0.0</version>
</dependency>
# application.yml
spring:
ai:
openai:
api-key: your-dashscope-api-key
base-url: https://dashscope.aliyuncs.com/compatible-mode/v1
chat:
options:
model: qwen-turbo
temperature: 0.3
// 使用:直接注入ChatClient,一行代码调用大模型
@Service
public class ChatService {
private final ChatClient chatClient;
public ChatService(ChatClient.Builder builder) {
this.chatClient = builder.build();
}
public String chat(String question) {
return chatClient.prompt()
.user(question)
.call()
.content();
}
// Function Calling 也支持
public String chatWithFunction(String question) {
return chatClient.prompt()
.user(question)
.functions("getWeather") // 注册工具函数
.call()
.content();
}
}
避坑提醒:Spring AI 1.0.0要求SpringBoot 3.2+,如果你还在用SpringBoot 2.7,用langchain4j更合适。
三、Starter 2:LangChain4j(Agent框架)
LangChain4j是Java生态最成熟的Agent框架,支持RAG、Agent、记忆系统、工具调用、流式输出,功能最全。之前Agent系列的记忆、工具调用、工作流都可以基于LangChain4j快速实现。
<!-- pom.xml -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-spring-boot-starter</artifactId>
<version>0.35.0</version>
</dependency>
<!-- 通义千问模型支持 -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-dashscope-spring-boot-starter</artifactId>
<version>0.35.0</version>
</dependency>
# application.yml
langchain4j:
dashscope:
chat-model:
api-key: your-dashscope-api-key
model-name: qwen-turbo
temperature: 0.3
// 使用:定义Agent接口,一行注解搞定
@AiService
public interface CustomerSupportAgent {
@SystemMessage("你是企业智能客服,仅基于参考文档回答问题。")
String chat(@UserMessage String userMessage);
}
// 注入直接用
@Service
public class ChatService {
@Resource
private CustomerSupportAgent agent;
public String chat(String question) {
return agent.chat(question);
}
}
核心优势:LangChain4j的@AiService注解太香了,定义接口+注解,框架自动生成实现,RAG、记忆、工具调用都通过配置注入,不用写样板代码。SpringBoot 2.7也能用。
四、Starter 3:Milvus SDK(向量检索)
RAG和Agent长期记忆都需要向量数据库,Milvus是Java生态支持最好的向量数据库,官方SDK完善,有SpringBoot starter。
<!-- pom.xml -->
<dependency>
<groupId>io.milvus</groupId>
<artifactId>milvus-sdk-java</artifactId>
<version>2.4.4</version>
</dependency>
# application.yml(自定义配置,Milvus没有官方starter,用配置类封装)
milvus:
host: localhost
port: 19530
// 配置类:封装Milvus客户端为Spring Bean
@Configuration
@ConfigurationProperties(prefix = "milvus")
@Data
public class MilvusConfig {
private String host;
private int port;
@Bean
public MilvusServiceClient milvusServiceClient() {
return new MilvusServiceClient(ConnectParam.newBuilder()
.withHost(host)
.withPort(port)
.build());
}
}
// 使用:直接注入MilvusServiceClient
@Service
public class VectorSearchService {
@Resource
private MilvusServiceClient milvusClient;
public List<String> search(List<Float> queryVector, int topK) {
SearchParam searchParam = SearchParam.newBuilder()
.withCollectionName("kb_document")
.withVectorFieldName("vector")
.withVectors(Collections.singletonList(queryVector))
.withTopK(topK)
.build();
// 解析结果...
return Collections.emptyList();
}
}
避坑提醒:Milvus没有官方SpringBoot starter,需要自己写配置类封装。但也不复杂,十几行代码搞定。如果用LangChain4j,它内置了Milvus集成,连配置类都不用写。
五、Starter 4:WebFlux(流式输出SSE)
大模型流式输出是刚需,用户等十几秒看完整回答体验太差。SpringBoot的WebFlux提供了原生SSE支持,配合大模型流式接口,几行代码就能实现真正的流式输出。
<!-- pom.xml -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
// 使用:返回Flux<String>,自动SSE流式输出
@RestController
@RequestMapping("/api/chat")
public class ChatController {
@GetMapping(value = "/stream", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<String> streamChat(@RequestParam String question) {
// 调用大模型流式接口,把每个delta转成Flux
return Flux.create(sink -> {
// 模拟大模型流式返回,实际用OkHttp异步读取
String[] tokens = question.split("");
for (String token : tokens) {
sink.next(token);
try { Thread.sleep(50); } catch (InterruptedException e) { break; }
}
sink.complete();
});
}
}
注意:用WebFlux的SseEmitter或Flux都可以实现流式输出。如果项目已经用了SpringMVC,用SseEmitter就行,不用整个切换到WebFlux。
六、Starter 5:Configuration Processor(配置管理)
大模型的参数(API Key、模型名、温度、超时时间)应该配置化,不要硬编码在代码里。spring-boot-configuration-processor让配置类有自动提示,写配置时IDE会补全,不容易写错。
<!-- pom.xml -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
// 大模型配置类
@Configuration
@ConfigurationProperties(prefix = "llm")
@Data
public class LlmConfig {
private String apiKey;
private String baseUrl = "https://dashscope.aliyuncs.com/compatible-mode/v1";
private String model = "qwen-turbo";
private double temperature = 0.3;
private int timeout = 60;
private int maxRetries = 3;
}
# application.yml(IDE会自动提示配置项)
llm:
api-key: your-api-key
model: qwen-turbo
temperature: 0.3
timeout: 60
max-retries: 3
这个starter虽然不直接提供AI能力,但它是工程化的基础。所有大模型参数配置化,换模型、换API Key不用改代码,改配置重启就行。生产环境必须用。
七、完整pom.xml(5个starter整合版,直接复制)
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.2.5</version>
</parent>
<groupId>com.example</groupId>
<artifactId>springboot-ai-starter</artifactId>
<version>1.0.0</version>
<properties>
<java.version>17</java.version>
<langchain4j.version>0.35.0</langchain4j.version>
<milvus.version>2.4.4</milvus.version>
</properties>
<dependencies>
<!-- 1. Spring AI:大模型调用 -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-openai-spring-boot-starter</artifactId>
<version>1.0.0</version>
</dependency>
<!-- 2. LangChain4j:Agent框架(和Spring AI二选一,或都用) -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-spring-boot-starter</artifactId>
<version>${langchain4j.version}</version>
</dependency>
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-dashscope-spring-boot-starter</artifactId>
<version>${langchain4j.version}</version>
</dependency>
<!-- 3. Milvus:向量数据库 -->
<dependency>
<groupId>io.milvus</groupId>
<artifactId>milvus-sdk-java</artifactId>
<version>${milvus.version}</version>
</dependency>
<!-- 4. WebFlux:流式输出 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<!-- 5. 配置管理 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<!-- Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
</project>
完整SpringBoot+大模型整合工程,包含5个starter的配置类、使用示例、完整pom.xml,后台回复【ai工具包】领取。
📦 落地资源推荐
跑SpringBoot+大模型项目,推荐阿里云轻量应用服务器,新用户价格友好再加上通过推广渠道的9折优惠券跌破低价,开发调试足够用,有部署需求点击文末「阅读原文」了解阿里云开发者特惠,无需求直接忽略。
💡 领取完整源码

关注图片上水印即Java-AI工程师,完整 SpringBoot + 大模型整合工程,包含 5 个 starter 的配置类、使用示例、完整 pom.xml,打出【agents】领取。
下期预告
RAG和Agent分开做都不难,但合在一起就各种问题——检索结果怎么传给Agent?Agent怎么决定要不要检索?多轮对话怎么保持检索上下文?今天给你一个完整可运行的知识库检索Agent,从检索到生成到记忆,全链路Java实现。下一篇讲:RAG+Agent合体:知识库检索Agent的完整Java实现(可写进简历)
本文属于「Java AI Agent实战」合集
更多推荐


所有评论(0)