Stable Release in branch 2.3
2.3.12
Released 10 Jun 2021
(5 years ago)
SoftwareSpring Boot
Version2.3
Supported
Java versions
Java 8+
Initial release2.3.0
15 May 2020
(6 years ago)
Latest release2.3.12
10 Jun 2021
(5 years ago)
End of
OSS support
May 2021
(Ended 5 years ago)
End of
enterprise support
Aug 2022
(Ended 3 years ago)
Release noteshttps://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.3-Release-Notes
Source codehttps://github.com/spring-projects/spring-boot/tree/v2.3.12.RELEASE
Documentationhttps://docs.spring.io/spring-boot/docs/2.3.12.RELEASE/reference/html/
Spring Boot 2.3 ReleasesView full list

What Is New in Spring Boot 2.3

Spring Boot 2.3 builds upon the core framework with a focus on cloud-native readiness and developer productivity enhancements. This release introduces built-in support for building efficient container images and provides more granular management for application availability.

Category Key Changes
New Features Layered JARs, Buildpack support, Liveness and Readiness probes
Improvements Graceful shutdown, Configuration properties validation, JDK 14 support
Deprecations Properties in spring.config.* namespace, JdbcTemplate bean lookup fallback

How does Spring Boot 2.3 improve Docker image creation?

Spring Boot 2.3 introduces first-class support for building optimized Docker images directly from your Maven or Gradle build. The new layered JAR approach separates application classes, dependencies, and resources into distinct layers, enabling faster container startup times and more efficient layer caching.

You can now use the spring-boot:build-image goal with Maven to create a Docker image using Cloud Native Buildpacks. This eliminates the need for a separate Dockerfile in many cases. The image building process is also customizable, allowing you to bind buildpacks and set environment variables during the build.

In practice, this means your CI/CD pipeline can build lighter, more secure production images without complex scripting. The layered architecture is a game-changer for reducing deployment times in containerized environments.

What's new for Kubernetes deployment in this release?

Spring Boot 2.3 adds built-in support for Kubernetes liveness and readiness probes. You can now expose application availability state using the spring-boot-actuator module without writing custom health indicators.

The framework automatically configures endpoints at /actuator/health/liveness and /actuator/health/readiness. These endpoints are essential for Kubernetes to manage your application's lifecycle, determining when to restart pods or send traffic to them.

This integration simplifies deployment to Kubernetes clusters by providing the health checks that orchestration systems expect out of the box. You get proper lifecycle management without the boilerplate code.

How does graceful shutdown work in 2.3?

Spring Boot 2.3 implements graceful shutdown across all embedded web servers (Tomcat, Jetty, Undertow). When enabled, the server stops accepting new requests while allowing existing requests to complete within a configurable timeout period.

You can activate it by setting server.shutdown=graceful and configure the timeout with spring.lifecycle.timeout-per-shutdown-phase. This is particularly valuable in cloud environments where instances need to terminate without dropping active connections.

The graceful shutdown works in conjunction with the readiness state for Kubernetes. When Kubernetes signals termination, your application can signal it's not ready and then begin graceful shutdown.

What JDK versions are supported?

Spring Boot 2.3 supports JDK 8, 11, and now JDK 14 as well. While JDK 8 remains the minimum requirement, the framework fully supports the newer LTS releases and the latest feature releases.

This release includes compatibility with JDK 14's new features and performance improvements. You can use records (preview feature) and other JDK 14 enhancements in your Spring Boot applications.

For production use, JDK 11 is recommended as it offers better performance and support. The JDK 14 support allows developers to experiment with upcoming Java features in their Spring applications.

Are there any notable deprecations to be aware of?

Spring Boot 2.3 deprecates several features in preparation for removal in future versions. The spring.config.* properties for configuring config file processing have been replaced with spring.config.import.

The framework also deprecated the fallback behavior for JdbcTemplate bean lookup when multiple instances exist. You'll now need to use @Qualifier or name your bean explicitly when multiple data sources are configured.

These changes encourage more explicit configuration and prevent ambiguous behavior. Check the release notes for the complete list of deprecated features before upgrading.

FAQ

How do I enable the new layered JAR functionality?
Add the layers configuration to your spring-boot-maven-plugin. When you run mvn package, it generates both a regular JAR and a layers.idx file that defines the layer structure for containerization.

Can I use the Buildpack support with private registries?
Yes, you can configure custom registry credentials and settings through Maven or Gradle plugin configuration. The build image goal supports environment variables for authenticating with private Docker registries.

Do I need to change my health indicators for the new probes?
Existing health indicators continue to work. The new liveness and readiness endpoints aggregate information from your existing health indicators but provide separate views tailored for Kubernetes lifecycle management.

What's the default timeout for graceful shutdown?
The default graceful shutdown timeout is 30 seconds. You can customize this using the spring.lifecycle.timeout-per-shutdown-phase property with a time value suffix (e.g., "30s", "2m").

Is JDK 14 supported for production use?
While Spring Boot 2.3 supports JDK 14, note that JDK 14 itself is not an LTS release. For production environments, JDK 11 or 8 (LTS versions) are recommended unless you specifically need JDK 14 features.

Releases In Branch 2.3

VersionRelease date
2.3.1210 Jun 2021
(5 years ago)
2.3.1120 May 2021
(5 years ago)
2.3.1015 Apr 2021
(5 years ago)
2.3.918 Feb 2021
(5 years ago)
2.3.814 Jan 2021
(5 years ago)
2.3.711 Dec 2020
(5 years ago)
2.3.612 Nov 2020
(5 years ago)
2.3.529 Oct 2020
(5 years ago)
2.3.417 Sep 2020
(5 years ago)
2.3.313 Aug 2020
(5 years ago)
2.3.224 Jul 2020
(5 years ago)
2.3.112 Jun 2020
(6 years ago)
2.3.015 May 2020
(6 years ago)
2.3.0.RC101 May 2020
(6 years ago)
2.3.0.M403 Apr 2020
(6 years ago)
2.3.0.M312 Mar 2020
(6 years ago)
2.3.0.M213 Feb 2020
(6 years ago)
2.3.0.M123 Jan 2020
(6 years ago)