3.0.13

Latest release in branch 3.0
Released 2 years ago (November 23, 2023)

Software Spring Boot
Branch 3.0
End of OSS support December 31, 2023
End of commercial support December 31, 2024
First official release version 3.0.0
First official release date 3 years ago (November 24, 2022)
Supported
Java versions
Java 17+
Release notes https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Release-Notes
Source code https://github.com/spring-projects/spring-boot/tree/v3.0.13
Documentation https://docs.spring.io/spring-boot/docs/3.0.13/spring-boot-reference/
Spring Boot 3.0 Releases View full list

What Is New in Spring Boot 3.0

Spring Boot 3.0 is a major release built on Spring Framework 6.0 and Jakarta EE 9+, representing a foundational shift for the platform. This version introduces significant new features, removes deprecated elements, and requires Java 17 as a minimum.

Category Key Changes
New Features GraalVM Native Image support, Observability with Micrometer, New ProblemDetails API
Improvements Enhanced Auto-configuration, Docker Compose Integration, Health Group Configuration
Deprecated & Removed Dropped Support for Java 8 & 11, Legacy Properties, Spring MVC & Jersey Support
Dependencies Spring Framework 6.0, Jakarta EE 9+, Kotlin 1.7+

Why is Java 17 now the minimum requirement?

Spring Boot 3.0 requires Java 17 because the entire Spring Framework 6.0 ecosystem has moved to this baseline. This allows the framework to leverage modern Java language features and API improvements that were unavailable in older LTS versions like Java 8 or 11.

In practice, this means you'll need to upgrade your JDK and potentially refactor code that uses older APIs. The benefit is access to records, sealed classes, and enhanced performance features that come with the newer Java runtime.

What happened to javax packages?

All javax. namespace usage for EE APIs has been migrated to jakarta.. This is a breaking change mandated by the move to Jakarta EE 9+ and affects imports in your servlet, persistence, and other EE-related code.

You'll need to update your import statements. For example, javax.servlet.HttpServletRequest becomes jakarta.servlet.HttpServletRequest. Most IDEs can help automate this bulk change across your codebase.

How does native compilation with GraalVM work?

Spring Boot 3.0 introduces first-class support for compiling applications into native executables using GraalVM. This is achieved through the Native Build Tools plugin and moves beyond the experimental stage.

You can generate a native image by configuring the Maven or Gradle plugin. The resulting binary starts almost instantly and uses significantly less memory, making it ideal for containerized and serverless deployments.

./mvnw spring-boot:build-image -Dspring-boot.build-image.imageName=my-app:native

What is the new Observability model?

Observability replaces the previous Actuator metrics model with a unified approach based on Micrometer and Micrometer Tracing. This provides a consistent way to handle metrics, tracing, and logging out of the box.

The new model automatically provides metrics for HTTP exchanges, data sources, cache, and more. It integrates with popular observability backends like Prometheus, OpenZipkin, and OpenTelemetry without requiring custom configuration.

Which features were removed in this release?

Spring Boot 3.0 removes several features that were deprecated in the 2.x series. Major removals include support for Apache ActiveMQ, Atomikos, EhCache 2, and Jersey. Support for legacy properties like server.servlet.* has also been dropped in favor of their server.* replacements.

If you're upgrading, check your configuration and dependencies for these technologies. You'll need to migrate to supported alternatives like JMS for ActiveMQ or Jetty for embedded servlet container support.

FAQ

Is Spring Boot 3.0 backwards compatible with Spring Boot 2.x?
No, it is not fully backwards compatible. The requirement for Java 17, the migration from javax to jakarta, and the removal of deprecated features mean you will need to make changes to your application code and configuration to upgrade.

Can I use my existing Spring Boot 2.x properties files?
Most will work, but some legacy properties have been removed. You should specifically check for properties that were deprecated in 2.x, such as those under server.servlet.*, which must be replaced with their server.* equivalents.

What is the replacement for Jersey if it was removed?
Spring MVC is the primary and recommended web framework. Spring WebFlux is the alternative for reactive applications. The auto-configuration and integration are more streamlined for these supported frameworks.

How do I get started with GraalVM native images?
Add the Native Build Tools plugin to your Maven or Gradle build. You can then use the spring-boot:build-image goal to create a container image containing your native executable, or use the native:compile goal to build a local binary.

Does the new Observability model work with my existing monitoring setup?
Yes, it should. The Micrometer-based system is designed to integrate with common monitoring systems like Prometheus and Grafana. You may need to update your client libraries or configuration to align with the new Micrometer Tracing approach for distributed traces.

Releases In Branch 3.0

Version Release date
3.0.13 2 years ago
(November 23, 2023)
3.0.12 2 years ago
(October 19, 2023)
3.0.11 2 years ago
(September 21, 2023)
3.0.10 2 years ago
(August 24, 2023)
3.0.9 2 years ago
(July 20, 2023)
3.0.8 2 years ago
(June 22, 2023)
3.0.7 2 years ago
(May 18, 2023)
3.0.6 3 years ago
(April 20, 2023)
3.0.5 3 years ago
(March 23, 2023)
3.0.4 3 years ago
(March 03, 2023)
3.0.3 3 years ago
(February 23, 2023)
3.0.2 3 years ago
(January 20, 2023)
3.0.1 3 years ago
(December 22, 2022)
3.0.0 3 years ago
(November 24, 2022)