1、前言
前面我们已经可以通过简单的方式集成Spring AI进行快速开发了。授人以鱼不如授人以渔,我们还是需要了解Spring AI的项目结构,以及他的一些核心概念。
2、项目结构
我们将Spring AI代码直接fork到我们自己的仓库中。fork的目的是方便我们为了学习偶尔可能做一些调整。fork之后,项目结构如下:
注意Spring AI如果git clone到自己本地,需要JDK17及以上版本,同时Maven建议使用3.8+版本。
项目结构一览。以下模块中基于个人愚见用 【★】数量标注重要程度,如标注有错,欢迎指正:
模块 | 备注说明 |
---|---|
★★★ auto-configurations | 自动配置模块,目前里面包含了mcp client和mcp server的自动装配。![]() |
★★★ document-readers | 文档解析工具,目前支持了jsoup,markdown,pdf,以及tika。![]() |
★★★ mcp/common(spring-ai-mcp) | Spring AI支持了mcp协议。为mcp客户端和服务端提供一些函数调用的抽象。 |
★★★★ models | 各类大模型的一些API接口。支持主流的openai,ollama,huggingface,anthropic等。![]() |
★★★★ spring-ai-bom | 不包含任何Java代码,只是用于管理Spring AI所需要的依赖清单,确保项目中使用的库版本兼容。在上面实战的文章中,我们集成Spring AI首先添加的就是这个依赖 |
★★★★ spring-ai-core | 熟悉spring framewoek的,看到这个命名就知道。这个肯定是核心模块,里面通常包含了核心的业务逻辑,包括RAG,聊天,transformer,embedding等核心类。 |
★ spring-ai-docs | Spring AI文档相关。 |
★★ spring-ai-integration-tests | 测试模块 |
★ spring-ai-retry | Spring AI 实用程序项目帮助实现远程调用重试。提供了一些基于RetryTemplate的重试处理逻辑。![]() |
★★★★ spring-ai-spring-boot-autoconfigure | spring boot框架下各大模型自动装配模块。![]() |
★★★ spring-ai-spring-boot-docker-compose | 提供一种便捷的方式,通过Docker Compose来管理和部署基于Spring Boot的AI应用。 |
★★★ spring-ai-spring-boot-starters | 提供 Spring Boot 的自动配置和启动器支持,简化 AI 功能的集成。只需引入相关依赖,即可快速启用 AI 功能,如生成式 AI、嵌入模型等。 |
★★ spring-ai-spring-boot-testcontainers | 集成testcontainers支持spring ai的功能测试。 |
★★ spring-ai-spring-cloud-bindings | 将 AI 功能与 Spring Cloud 生态系统集成,支持动态配置管理、服务发现、负载均衡、容错与熔断等功能,适用于分布式环境中的 AI 应用。 |
★★ spring-ai-test | 提供对 Spring 组件的测试支持,兼容 JUnit 和 TestNG 框架。 |
★ vector-stores | 用于与向量数据库集成的组件,它允许你在 Spring 应用程序中轻松地存储和检索向量嵌入。目前支持weaviate,redis,neo4j等,支持高效的向量存储与相似度搜索,适用于语义搜索、推荐系统等场景。![]() |
3、体系结构
看过去spring ai其实遵循了常规的分层体系。通过将不同功能划分到不同模块中实现职责分离,模块化和可扩展性。其实很明显,继续往下看。
3.1、核心层
如上面的spring-ai-core,models,spring-ai-bom等模块可以划分到核心层。核心层一般作为Spring AI基础,提供了与AI模型交互的核心功能和接口。
3.2、Spring Boot集成层
包含了spring-ai-spring-boot-autoconfigure,spring-ai-spring-boot-starter提供一系列自动装配能力,便于将Spring AI与Spring Boot无缝集成,实现开箱即用。
3.3、数据存储与处理层
包含了模块vector-stores,用于处理处理 AI 应用中的数据存储、检索和预处理。
3.4、工具与扩展
Spring AI提供了很多支持测试模块,如spring-ai-test,spring-ai-spring-boot-testcontainers,spring-ai-integration-tests。提供不同的测试模块是为了覆盖不同层次的测试需求,确保框架的可靠性和扩展性。
- spring-ai-test: 基础测试支持模块。提供通用的测试工具类和基础配置,支持 单元测试 和 简单集成测试,兼容 JUnit 和 TestNG 框架。一般用于测试Spring AI的核心逻辑,快速验证但组件的行为。
- spring-ai-spring-boot-testcontainers:容器化集成测试模块。通过 Testcontainers 实现 真实外部依赖的模拟,支持复杂集成测试。通常用来定义和管理 Docker 容器(如向量数据库、AI 服务、消息队列),提供与 Spring Boot 集成的测试配置(如动态注入容器化的数据库连接)。用于测试与外部服务的集成(如向量数据库 Weaviate、Redis),验证 Spring AI 在分布式环境中的行为(如服务发现、负载均衡)。
- spring-ai-integration-tests:端到端集成测试模块。执行端到端(End-to-End)测试,验证 Spring AI 各模块的 整体协作。覆盖完整的用户场景(如从 HTTP 请求到 AI 模型响应的全流程),测试跨模块的集成逻辑(如向量存储 + 嵌入模型 + LLM 的联合工作流)。一般用于Spring AI 框架自身的质量保障(非用户直接使用)。
为何需要分多个测试模块?
通常是需要职责分离,基础测试工具与容器化测试逻辑解耦,提供代码的可维护性。针对不同的分层有时候需要确保不同的测试策略,如核心原子逻辑的正确性,组件协作的兼容性,或整体流程的稳定性等等。通常不同的测试框架对于某一个层次的测试能力会有独到的优势。因此往往复杂的大型项目中,都会采用分层的架构以及分层的测试模块。
除此以外,还提供了一系列工具的集成,如spring-ai-spring-boot-docker-compose支持docker容器的集成,spring-ai-retry提供重试机制。
4、总结
通过Spring AI的结构说明,分层结构可以进一步了解Spring AI整体的项目体系。帮助我们了解Spring AI提供的能力,可以更好的帮助我们进行后续的学习。