Skip to content

Spring Boot 3.3.0 M3 Release Notes

Andy Wilkinson edited this page Mar 22, 2024 · 26 revisions

Spring Boot 3.3.0-M3 Release Notes

For changes in earlier milestones, please refer to:

Upgrading from Spring Boot 3.2

Minimum Requirements Changes

None.

Prometheus Metrics

To use Spring Boot’s auto-configuration of Micrometer’s Prometheus support, replace your dependency on micrometer-registry-prometheus with a dependency on micrometer-registry-prometheus-simpleclient.

micrometer-registry-prometheus-simpleclient is a new module in Micrometer 1.13. It contains Micrometer’s existing support for Prometheus and uses the 0.16.x generation of the Prometheus Java Client. The existing micrometer-registry-prometheus module now provides support for the 1.x generation of the Prometheus Java Client and is not yet supported by Spring Boot.

Flyway 10

This release upgrades to Flyway 10.10. Flyway 10 is more modular than previous versions and support for several databases has been moved into a number of new, database-specific modules. If you are using any of the following databases, update your dependencies accordingly:

  • DB2 (flyway-database-db2)

  • Derby (flyway-database-derby)

  • HSQLDB (flyway-database-hsqldb)

  • Informix (flyway-database-informix)

  • PostgreSQL (flyway-database-postgresql)

  • Redshift (flyway-database-redshift)

  • SAP HANA (flyway-database-saphana)

  • Snowflake (flyway-database-snowflake)

  • Sybase ASE (flyway-database-sybasease)

Infinispan 15

This release upgrades to Infinispan 15. Infinispan 15 has raised its Jakarta EE baseline and, as such, a number of its -jakarta modules, such as infinispan-core-jakarta, no longer exist. Use their standard alternatives, such as infinispan-core, instead.

Git Commit ID Maven Plugin

The plugin has been upgraded to 8.0.x. As part of this upgrade, the default date format is now yyyy-MM-dd’T’HH:mm:ssXXX. This provides compatibility with Maven’s reproducible builds feature.

New and Noteworthy

Tip
Check the configuration changelog for a complete overview of the changes in configuration.

CDS Support

CDS is a JVM feature that can help reduce the startup time and memory footprint of Java applications. Spring Boot now has support for easy creation of a CDS friendly layout. This layout can be created by extracting the uber JAR with the help of the tools jarmode:

java -Djarmode=tools -jar your-application.jar extract

This creates a your-application/your-application.jar and the needed libraries in a your-application/lib folder. The application can then be executed with java -jar your-application/your-application.jar.

The tools jarmode supports two commands at the moment:

  • extract, as shown above. This supersedes -Djarmode=layertools extract.

  • list-layers, which supersedes -Djarmode=layertools list-layers.

Run

java -Djarmode=tools -jar your-application.jar help <command>

to get more details.

If you have used layers.enabled = false in your Gradle build file or <layers><enabled>false</enabled></layers> in your Maven pom.xml, please note that disabling layers no longer prevents the inclusion of the jarmode JAR. Use includeTools on the BootJar or BootWar task or <configuration><includeTools>false</includeTools></configuration> on the spring-boot-maven-plugin for that.

Virtual Threads

The virtual threads support for Undertow has been reverted, as it leaks memory. See #39812 for details.

Base64 Resources

Resources can now be loaded as Base64 encoded text values using a base64: prefix. This can be useful with resources such as SSL certificates, as in this example:

spring:
  ssl:
    bundle:
      pem:
        mybundle:
          keystore:
            certificate: "base64:LS0tLS1CRUdJTi..."
            private-key: "base64:QmFnIEF0dHJpYn..."

SBOM Actuator Endpoint

The spring-boot-actuator module now includes a new SBOM endpoint. By default the endpoint will server META-INF/sbom/bom.json or META-INF/sbom/application.cdx.json files located in your jar.

Additional configuration has also been provided in the spring-boot-parent-starter POM to make SBOM plugins easier to configure.

More documentation on the feature will be added in our RC1 release.

Documentation Updates

The Spring Boot documentation in the process of being migrated to Antora. When complete, this will provide more structure as well as better search capabilities.

Currently documentation for Spring Boot 3.3.0-M3 has not been published. We hope to do so soon, but in the meantime please use the 3.3.0-SNAPSHOT documentation links.

Miscellaneous

Apart from the changes listed above, there have also been lots of minor tweaks and improvements including:

  • jakarta.inject:jakarta.inject-api is now included in Spring Boot’s dependency management.

  • The date format of the git-commit-id-maven-plugin has been changed to yyyy-MM-dd’T’HH:mm:ssXXX to allow reproducible builds. See #39606 for details.

  • The spring-boot-starter-jetty no longer includes jetty-jndi by default. If you need JNDI support, please add org.eclipse.jetty:jetty-jndi to your dependencies.

  • On Windows it’s now possible to start the application with mvn spring-boot:run even if it has a gazillion dependencies. Before 3.3.0 it would fail with a "The filename or extension is too long" exception.

Deprecations in Spring Boot 3.3.0-M3

  • -Djarmode=layertools extract in favor of -Djarmode=tools extract --layers

  • -Djarmode=layertools list in favor of -Djarmode=tools list-layers

  • layers.includeLayerTools on the BootJar and BootWar task in favor of includeTools.

  • <layers><enabled>…​</enabled></layers> in favor of <includeTools>…​</includeTools>

Clone this wiki locally