1. 概述

在开发 Spring AI 应用时,经常需要连接各种外部服务 —— 模型服务(如 Ollama)、向量数据库(如 ChromaQdrantWeaviateMilvusOpenSearch)、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 运行的模型服务或向量数据库。

Mavenpom.xml):

<dependency>
   <groupId>org.springframework.ai</groupId>
   <artifactId>spring-ai-spring-boot-docker-compose</artifactId>
</dependency>

Gradlebuild.gradle):

dependencies {
    implementation 'org.springframework.ai:spring-ai-spring-boot-docker-compose'
}

📖 请参阅 依赖管理 章节,将 Spring AI BOM 添加到你的构建文件中。

2.2 服务连接工厂

spring-ai-spring-boot-docker-compose 模块提供了以下服务连接工厂:

连接详情(Connection Details)匹配容器镜像
AwsOpenSearchConnectionDetailslocalstack/localstack
ChromaConnectionDetailschromadb/chromaghcr.io/chroma-core/chroma
MongoConnectionDetailsmongodb/mongodb-atlas-local
OllamaConnectionDetailsollama/ollama
OpenSearchConnectionDetailsopensearchproject/opensearch
QdrantConnectionDetailsqdrant/qdrant
TypesenseConnectionDetailstypesense/typesense
WeaviateConnectionDetailssemitechnologies/weaviatecr.weaviate.io/semitechnologies/weaviate
McpSseClientConnectionDetailsdocker/mcp-gateway

📖 Spring Bootspring-boot-docker-compose 模块提供了更多通用服务连接。完整列表请参阅 Docker Compose Support 文档。


3. Testcontainers 支持

3.1 依赖配置

Spring AI 提供了 Spring Boot 自动配置,用于连接通过 Testcontainers 运行的模型服务或向量数据库。

Mavenpom.xml):

<dependency>
   <groupId>org.springframework.ai</groupId>
   <artifactId>spring-ai-spring-boot-testcontainers</artifactId>
</dependency>

Gradlebuild.gradle):

dependencies {
    implementation 'org.springframework.ai:spring-ai-spring-boot-testcontainers'
}

📖 请参阅 依赖管理 章节,将 Spring AI BOM 添加到你的构建文件中。

3.2 服务连接工厂

spring-ai-spring-boot-testcontainers 模块提供了以下服务连接工厂:

连接详情(Connection Details匹配容器类型
AwsOpenSearchConnectionDetailsLocalStackContainer
ChromaConnectionDetailsChromaDBContainer
McpSseClientConnectionDetailsDockerMcpGatewayContainer
MilvusServiceClientConnectionDetailsMilvusContainer
MongoConnectionDetailsMongoDBAtlasLocalContainer
OllamaConnectionDetailsOllamaContainer
OpenSearchConnectionDetailsOpensearchContainer
QdrantConnectionDetailsQdrantContainer
TypesenseConnectionDetailsTypesenseContainer
WeaviateConnectionDetailsWeaviateContainer

📖 Spring Bootspring-boot-testcontainers 模块提供了更多通用服务连接。完整列表请参阅 Testcontainers Service Connections 文档。


4. 总结

Spring AI 通过两个专用模块,将容器化服务连接的复杂度降到最低:

对比维度Docker ComposeTestcontainers
用途本地开发环境集成测试
生命周期手动或通过 docker compose 管理测试框架自动管理(启动/销毁)
服务类型9AI 专用 + Spring Boot 通用10AI 专用 + Spring Boot 通用
配置量添加依赖即可添加依赖即可

核心原则:只需添加对应依赖,Spring Boot 自动配置会探测运行中的容器并建立连接,开发者无需手写任何连接参数。

更多推荐