Migration to Spring Boot 4.1

Migration to Spring Boot 4.1

Please add any missing hints to this document!

See TC’s draft of Officially Supported Technologies (OST):

Help

Ask on #development Slack channel if a module doesn’t build with Spring Boot 4.1.

Spring Boot

Upgrade the spring-boot-starter-parent version to the latest 4.1 version, find the version on https://github.com/spring-projects/spring-boot/tags

This is a snapshot version like 4.1.0-SNAPSHOT or a milestone version like 4.1.0-M4 or a release candidate version like 4.1.0-RC5 because a final version is not available yet.

Why milestone and release candidate versions?

Most FOLIO development teams start he migration to Spring Boot 4.1 before the official Spring Boot 4.1.0 version gets released:

Minor Version

Initial Release (GA)

End of OSS Support

Minor Version

Initial Release (GA)

End of OSS Support

Spring Boot 4.1.x

2026-05-20

2027-06-30

Spring Boot 4.1.0 Snapshot version has been available since 2026-01-15.
Spring Boot 4.1.0 Milestone version expected by end of 2026-01.
Spring Boot 4.1.0 Release Candidate version expected no later than 2026-04-27.

See https://spring.io/projects/spring-boot#support for release dates, and https://github.com/spring-projects/spring-boot/wiki/Supported-Versions#release-schedule for release schedules.

Spring suggests to use milestone versions, see https://spring.io/blog/2025/01/21/milestones-to-central. This is best practice.

Why snapshot versions?

From Trillium on snapshot versions are no longer needed as FOLIO switches from OpenFeign to Spring HTTP Service Clients. The first Spring Boot milestone version is available early, 5 months before the final (generally available = GA) release, migration to Spring Boot 4.1 can start without using Spring Boot snapshot versions.

For flower releases before Trillium OpenFeign would have required us to use spring-cloud-starter-openfeign snapshot versions at the begin of the migration to the next Spring Boot version because OpenFeign publishes the first milestone version only several weeks after the corresponding Spring Boot milestone version: https://github.com/spring-cloud/spring-cloud-openfeign/tags

Browse available snapshot versions at https://repo.spring.io/ui/native/snapshot/org/springframework/boot/spring-boot-dependencies/

To use a snapshot version add this to your pom.xml:

<repositories> <repository> <id>spring-snapshots</id> <name>Spring Snapshots</name> <url>https://repo.spring.io/snapshot</url> <snapshots> <enabled>true</enabled> </snapshots> <releases> <enabled>false</enabled> </releases> </repository> </repositories>

When upgrade to release versions?

As needed, for example when a security fix requires a Spring Boot version bump.

What is Spring Boot’s milestone and release candidate history?

v4.0.x:

v3.5.x:

v3.4.x:

v3.3.x:

v3.2.x:

v3.1.x:

Spring Boot has always been released on the planned date.

Difference between RC and GA

Is there a risk that the devs on the spring project change their minds and some things in the 4.1 RC don't make it into 4.1 GA?

No, RC is feature freeze.

Even if a feature from RC gets removed in GA, most FOLIO modules won’t be affected because usually they don’t use new features from the latest minor version.