前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >深度剖析:Spring AI项目架构与分层体系全解读

深度剖析:Spring AI项目架构与分层体系全解读

原创
作者头像
有一只柴犬
修改2025-03-28 21:24:08
修改2025-03-28 21:24:08
830
举报
文章被收录于专栏:人工智能人工智能

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 框架自身的质量保障(非用户直接使用)。

为何需要分多个测试模块?undefined通常是需要职责分离,基础测试工具与容器化测试逻辑解耦,提供代码的可维护性。针对不同的分层有时候需要确保不同的测试策略,如核心原子逻辑的正确性,组件协作的兼容性,或整体流程的稳定性等等。通常不同的测试框架对于某一个层次的测试能力会有独到的优势。因此往往复杂的大型项目中,都会采用分层的架构以及分层的测试模块。

除此以外,还提供了一系列工具的集成,如spring-ai-spring-boot-docker-compose支持docker容器的集成,spring-ai-retry提供重试机制。

4、总结

通过Spring AI的结构说明,分层结构可以进一步了解Spring AI整体的项目体系。帮助我们了解Spring AI提供的能力,可以更好的帮助我们进行后续的学习。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、前言
  • 2、项目结构
  • 3、体系结构
    • 3.1、核心层
    • 3.2、Spring Boot集成层
    • 3.3、数据存储与处理层
    • 3.4、工具与扩展
  • 4、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档