测试容器
约 506 字大约 2 分钟
2026-09-15
📌 原文地址:https://docs.spring.io/java-ai/reference/api/testcontainers.html 📌 原文版本:Java AI 2.0.1
Java AI 提供了 Spring Boot 自动配置,用于建立与通过 Testcontainers 运行的模型服务或向量存储的连接。
白话解读
Testcontainers 是 Java 生态里非常流行的"集成测试基础设施"库:它能在 JUnit 测试启动时拉起 Docker 容器(比如 PostgreSQL、Redis),跑完测试再自动销毁,让集成测试拥有真实环境但又不污染开发机。 Java AI 在此基础上提供了"Service Connection"机制:自动识别测试用的容器、读取连接信息、注入 Spring Boot 配置,省去手写 @DynamicPropertySource 的麻烦。
要启用此功能,请将以下依赖项加入项目的 Maven pom.xml:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-spring-boot-testcontainers</artifactId>
</dependency>或 Gradle build.gradle:
dependencies {
implementation 'org.springframework.ai:spring-ai-spring-boot-testcontainers'
}请参考 依赖管理(Dependency Management) 部分,将 Java AI BOM 添加到构建文件中。
SERVICE CONNECTIONS(服务连接)
spring-ai-spring-boot-testcontainers 模块中提供了以下服务连接工厂:
| 连接详情(Connection Details) | 匹配的容器类型(Matched on) |
|---|---|
AwsOpenSearchConnectionDetails | LocalStackContainer 类型的容器 |
ChromaConnectionDetails | ChromaDBContainer 类型的容器 |
McpSseClientConnectionDetails | DockerMcpGatewayContainer 类型的容器 |
MilvusServiceClientConnectionDetails | MilvusContainer 类型的容器 |
OllamaConnectionDetails | OllamaContainer 类型的容器 |
OpenSearchConnectionDetails | OpenSearchContainer 类型的容器 |
QdrantConnectionDetails | QdrantContainer 类型的容器 |
TypesenseConnectionDetails | TypesenseContainer 类型的容器 |
WeaviateConnectionDetails | WeaviateContainer 类型的容器 |
白话解读
- Service Connection 是 Spring Boot 3.1+ 引入的机制:你的测试类声明一个
ConnectionDetailsFactory,Spring Boot 在启动时会从容器中读出 URL/端口/账号密码等,自动绑定到对应的*Properties。 - 上表里每一行的左列是"连接详情"接口,右列是"我能识别哪种容器"。例如测试里启了一个
OllamaContainer,Java AI 就会自动把它连接到OllamaChatModel等组件上。
更多服务连接由 Spring Boot 模块 spring-boot-testcontainers 提供。请参考 Testcontainers Service Connections 文档页面以获取完整列表。