当前位置: 首页 > news >正文

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

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-docsSpring AI文档相关。
★★ spring-ai-integration-tests测试模块
★ spring-ai-retrySpring AI 实用程序项目帮助实现远程调用重试。提供了一些基于RetryTemplate的重试处理逻辑。
★★★★ spring-ai-spring-boot-autoconfigurespring 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提供的能力,可以更好的帮助我们进行后续的学习。

相关文章:

  • wordpress建不了网站正规网站建设公司
  • 哪里能找到免费网站seo学徒是做什么
  • 做网站美工的前途怎么样百度网盘搜索引擎入口官网
  • 软件技术的发展前景seo教程免费分享
  • 西部数码网站管理助手 绑定域名常州seo建站
  • 网站装修用什么软件做免费推广软件哪个好
  • 3D珠宝渲染用什么软件比较好?渲染100邀请码1a12
  • 【学习笔记】MeshCat: 基于three.js的远程可控3D可视化工具
  • Python 字典和集合(子类化UserDict)
  • Java spring mybatis面试题(200道),八股文
  • 深入浅出卡尔曼滤波:从理论推导到C++实战
  • 前端面试题(六):HTTP和HTTPS的区别以及他们如何保障数据安全
  • FFMpeg视频编码实战和音频编码实战
  • 大模型是如何把向量解码成文字输出的
  • 伪代码的定义与应用场景
  • 大模型Agent | 构建智能体 AI-Agent的 5大挑战,及解决方案!
  • 20250408在荣品的PRO-RK3566开发板使用Rockchip原厂的buildroot系统时自动挂载eth0
  • Qt 自带的QSqlDatabase 模块中使用的 SQLite 和 SQLite 官方提供的 C 语言版本(sqlite.org)对比
  • 部门职责、工作内容
  • 【NLP 面经 6】
  • 如何判断一条连接是TCP连接还是UDP连接?
  • 2024年AIS SCI:多策略灰狼算法CBRGWO,深度解析+性能实测
  • 锚定体验价值,锐捷网络重磅出击,EDN 体验驱动网络解决方案全新发布
  • glTF-Draco 压缩:优化 3D 模型的加载
  • 第一部分——Docker篇 第三章 构建自定义镜像
  • [特殊字符] 企业级网络压力测试全流程手册