程序员开发实例大全宝库

网站首页 > 编程文章 正文

JAVA程序员自救之路——SpringAI新版本,M6过渡到M7

zazugpt 2025-05-03 17:44:02 编程文章 21 ℃ 0 评论

之前我一直使用的1.0.0-M6版本,最近发现Spring已经更新到M7了,据说这个版本是预览版里最后一个版本了,可能在SpringIO开发者大会的时候就要发布正式版了。这个M7的版本有很多破坏性的改造,代码库进行了深度重构,形成了更模块化、易维护的架构 ,显著降低了开发者集成 AI 能力的复杂性。所以很有必要记录一下如何从老版本升级到M7。

M7版本主要在这几点改变了:

  • Artifact ID 和包名标准化 :所有组件的命名规范统一,提升依赖管理的清晰度.
  • 工具调用 API 全面更新 :新增的工具调用 API 替代了旧版设计(已弃用),进一步简化与外部 AI 服务的交互流程。
  • Fluent API 增强 :通过链式调用构建 Prompt 对象,开发者可更直观地将提示词输入 AI 模型,减少冗余代码。

具体说来,首先对咱们来说最需要关心的就是包名和类路径,Artifact ID的调整。比如spring-ai-{model}-spring-boot-starter变成了spring-ai-starter-model-{model},其他的模块也类似。所以升级时pom文件或者gradle文件里。另外有些包路径,比如一些内容相关的类Content,Media以及相关类,挪到了
org.springframework.ai.content包下。这些如果用了Idea,自动导包轻松解决。

然后是模块化,按需引入,使应用更轻量。下面是具体几个重点模块的介绍:

  • spring-ai-commons: 最基础的,包含文档(Document)、文本分割器(TextSplitter)等核心模型和工具,不依赖其他 Spring AI 模块。
  • spring-ai-model: 负责 AI 能力的抽象,像 ChatModel, EmbeddingModel, ImageModel 这些接口都在这。
  • spring-ai-vector-store: 统一的向量数据库抽象层。
  • spring-ai-client-chat: 更高层的对话式 AI API,像 ChatClient、对话记忆 (ChatMemory) 都在这里。
  • spring-ai-rag: 专门为 RAG 设计的框架。
  • spring-ai-model-chat-memory-*:持久化实现,Cassandra、Neo4j 和 JDBC 实现。

还有SpringAI在M7中删除了内置的内存级向量数据库,SimpleVectorStore。想用这个做demo的还是找个专业向量数据库吧,比如Redis

下面,我们就来看一下,如何将M6的版本升级到M7。

首先是仓库,M7挪到了快照仓库,所以不需要额外添加里程碑仓库了。下面这段代码可以去掉了。

        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>

然后改一下spring-ai-bom的版本。

<properties>
        <spring-ai.version>1.0.0-M7</spring-ai.version>
 </properties>
<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.ai</groupId>
                <artifactId>spring-ai-bom</artifactId>
                <version>${spring-ai.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

这是我们同步下maven,会发现好多包都找不到了,别着急,是名称换了。我们按相应的规范把他们改一下。

这时,我们发现
spring-ai-spring-boot-autoconfigure,这个是没有找到。而且去掉还会报错。很奇怪。网上说,autoconfigure已经分开添加到每个模块中去了,可是我没找到。所以先加上M6版本的先用着吧。有试验成功的同学可以在评论区留言这个到底怎么回事。

目前这样改造,之前的项目运行成功了。

执行以下之前系统的接口。

基本上,如果你用的是starter,只是改一下命名就ok了,其他的starter会帮你搞定。如果你使用的原生的包,就可能需要更多的改造。这次版本是里程碑版的最终版,后续到了正式版,升级估计也不会太复杂了。

#spring# #java# #ai#

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表