Get ahead
VMware offers training and certification to turbo-charge your progress.
Learn moreSpring AI 1.0.0-SNAPSHOT introduces several important changes to artifact IDs, dependency management, and autoconfiguration. This blog post outlines these changes and provides guidance on how to update your projects.
The most significant change is the naming pattern for Spring AI starter artifacts:
spring-ai-{model}-spring-boot-starter
→ spring-ai-starter-model-{model}
spring-ai-{store}-store-spring-boot-starter
→ spring-ai-starter-vector-store-{store}
spring-ai-mcp-{type}-spring-boot-starter
→ spring-ai-starter-mcp-{type}
Additionally, you'll need to add snapshot repositories and update your dependency management configuration.
There are two ways to update your projects to Spring AI 1.0.0-SNAPSHOT: automatic updates using AI tools or manual updates. The automatic approach leverages Claude Code to quickly transform your projects, while the manual approach provides step-by-step instructions for those who prefer to make changes directly.
For those who prefer an automated approach, you can use the Claude Code CLI tool with a provided prompt to automatically upgrade your projects to 1.0.0-SNAPSHOT. This approach can save time and reduce errors when upgrading multiple projects or complex codebases. For more details, see the Automating upgrading using AI section in the Upgrade Notes.
Here we will just show the steps that the Claude Code CLI tool will perform in the form of screen snapshots.
Pasting in the prompt.
Updating BOM version.
Adding a repository.
Updating a starter.
All done!
To use the 1.0.0-SNAPSHOT version, you need to add the snapshot repositories to your build file. The dependency on the Central Sonatype Snapshots repository (https://central.sonatype.com/repository/maven-snapshots/
) is specifically needed to pick up snapshot dependencies of the MCP Java SDK.
<repositories>
<repository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<releases>
<enabled>false</enabled>
</releases>
</repository>
<repository>
<name>Central Portal Snapshots</name>
<id>central-portal-snapshots</id>
<url>https://central.sonatype.com/repository/maven-snapshots/</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
repositories {
mavenCentral()
maven { url 'https://repo.spring.io/snapshot' }
maven {
name = 'Central Portal Snapshots'
url = 'https://central.sonatype.com/repository/maven-snapshots/'
}
}
Update your Spring AI BOM version to 1.0.0-SNAPSHOT
in your build configuration:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-bom</artifactId>
<version>1.0.0-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
dependencies {
implementation platform("org.springframework.ai:spring-ai-bom:1.0.0-SNAPSHOT")
// Add specific Spring AI dependencies here
}
The naming pattern for Spring AI starter artifacts has changed in 1.0.0-SNAPSHOT. You'll need to update your dependencies according to the following patterns:
spring-ai-{model}-spring-boot-starter
→ spring-ai-starter-model-{model}
spring-ai-{store}-store-spring-boot-starter
→ spring-ai-starter-vector-store-{store}
spring-ai-mcp-{type}-spring-boot-starter
→ spring-ai-starter-mcp-{type}
Before:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-openai-spring-boot-starter</artifactId>
</dependency>
After:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-openai</artifactId>
</dependency>
The Spring AI autoconfiguration has changed from a single monolithic artifact to individual autoconfiguration artifacts per model, vector store, and other components. This change was made to minimize the impact of different versions of dependent libraries conflicting, such as Google Protocol Buffers, Google RPC, and others.
By separating autoconfiguration into component-specific artifacts, you can avoid pulling in unnecessary dependencies and reduce the risk of version conflicts in your application.
The original monolithic artifact is no longer available:
<!-- NO LONGER AVAILABLE -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-spring-boot-autoconfigure</artifactId>
<version>${project.version}</version>
</dependency>
Instead, each component now has its own autoconfiguration artifact following these patterns:
spring-ai-autoconfigure-model-{model}
spring-ai-autoconfigure-vector-store-{store}
spring-ai-autoconfigure-mcp-{type}
In most cases, you won't need to explicitly add these autoconfiguration dependencies. They are included transitively when using the corresponding starter dependencies.