1. 概述
在开发 Spring AI 应用时,经常需要连接各种外部服务 ------ 模型服务(如 Ollama)、向量数据库(如 Chroma、Qdrant、Weaviate、Milvus、OpenSearch)、MCP 网关等。手动安装和配置这些服务既繁琐又容易出错。
Spring AI 提供了两种开箱即用的容器化解决方案,让开发者无需关心服务连接细节:
| 方案 | 适用阶段 | 原理 |
|---|---|---|
Docker Compose |
本地开发 | 通过 Docker Compose 启动服务容器,Spring Boot 自动配置连接 |
Testcontainers |
集成测试 | 通过 Testcontainers 在测试中动态启动容器,测试结束自动销毁 |
两者的共同优势:只需添加一个依赖,无需手动配置连接参数 。Spring AI 会通过服务连接工厂(Service Connection Factory)自动探测容器并建立连接。
2. Docker Compose 支持
2.1 依赖配置
Spring AI 提供了 Spring Boot 自动配置,用于连接通过 Docker Compose 运行的模型服务或向量数据库。
Maven(pom.xml):
xml
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-spring-boot-docker-compose</artifactId>
</dependency>
Gradle(build.gradle):
groovy
dependencies {
implementation 'org.springframework.ai:spring-ai-spring-boot-docker-compose'
}
📖 请参阅 依赖管理 章节,将
Spring AI BOM添加到你的构建文件中。
2.2 服务连接工厂
spring-ai-spring-boot-docker-compose 模块提供了以下服务连接工厂:
| 连接详情(Connection Details) | 匹配容器镜像 |
|---|---|
AwsOpenSearchConnectionDetails |
localstack/localstack |
ChromaConnectionDetails |
chromadb/chroma、ghcr.io/chroma-core/chroma |
MongoConnectionDetails |
mongodb/mongodb-atlas-local |
OllamaConnectionDetails |
ollama/ollama |
OpenSearchConnectionDetails |
opensearchproject/opensearch |
QdrantConnectionDetails |
qdrant/qdrant |
TypesenseConnectionDetails |
typesense/typesense |
WeaviateConnectionDetails |
semitechnologies/weaviate、cr.weaviate.io/semitechnologies/weaviate |
McpSseClientConnectionDetails |
docker/mcp-gateway |
📖
Spring Boot的spring-boot-docker-compose模块提供了更多通用服务连接。完整列表请参阅Docker Compose Support文档。
3. Testcontainers 支持
3.1 依赖配置
Spring AI 提供了 Spring Boot 自动配置,用于连接通过 Testcontainers 运行的模型服务或向量数据库。
Maven(pom.xml):
xml
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-spring-boot-testcontainers</artifactId>
</dependency>
Gradle(build.gradle):
groovy
dependencies {
implementation 'org.springframework.ai:spring-ai-spring-boot-testcontainers'
}
📖 请参阅 依赖管理 章节,将
Spring AI BOM添加到你的构建文件中。
3.2 服务连接工厂
spring-ai-spring-boot-testcontainers 模块提供了以下服务连接工厂:
连接详情(Connection Details) |
匹配容器类型 |
|---|---|
AwsOpenSearchConnectionDetails |
LocalStackContainer |
ChromaConnectionDetails |
ChromaDBContainer |
McpSseClientConnectionDetails |
DockerMcpGatewayContainer |
MilvusServiceClientConnectionDetails |
MilvusContainer |
MongoConnectionDetails |
MongoDBAtlasLocalContainer |
OllamaConnectionDetails |
OllamaContainer |
OpenSearchConnectionDetails |
OpensearchContainer |
QdrantConnectionDetails |
QdrantContainer |
TypesenseConnectionDetails |
TypesenseContainer |
WeaviateConnectionDetails |
WeaviateContainer |
📖
Spring Boot的spring-boot-testcontainers模块提供了更多通用服务连接。完整列表请参阅 Testcontainers Service Connections 文档。
4. 总结
Spring AI 通过两个专用模块,将容器化服务连接的复杂度降到最低:
| 对比维度 | Docker Compose |
Testcontainers |
|---|---|---|
| 用途 | 本地开发环境 | 集成测试 |
| 生命周期 | 手动或通过 docker compose 管理 |
测试框架自动管理(启动/销毁) |
| 服务类型 | 9 种 AI 专用 + Spring Boot 通用 |
10 种 AI 专用 + Spring Boot 通用 |
| 配置量 | 添加依赖即可 | 添加依赖即可 |
核心原则 :只需添加对应依赖,Spring Boot 自动配置会探测运行中的容器并建立连接,开发者无需手写任何连接参数。