Skip to content

Spring Boot 4.0.0 M2 Release Notes

Stéphane Nicoll edited this page Aug 11, 2025 · 8 revisions

Spring Boot 4.0.0-M2 Release Notes

Upgrading from Spring Boot 3.5

Removed Support for javax.annotations.NonNull

Actuator endpoint parameters no longer can use javax.annotations.NonNull to declare that a parameter is optional. If you are using this annotation, you should migrate to OptionalParameter, see below.

Elasticsearch Client

In response to changes in Elasticsearch, auto-configuration for the now-deprecated low-level Elasticsearch RestClient has been replaced with auto-configuration for the new Rest5Client. If you were using Spring Boot’s RestClientBuilderCustomizer to customize the client, you must now use Rest5ClientBuilderCustomizer instead.

As part of the changes in Elasticsearch, the client code has been consolidated in the co.elastic.clients:elasticsearch-java module, including built-in sniffer support. The org.elasticsearch.client:elasticsearch-rest-client and org.elasticsearch.client:elasticsearch-rest-client-sniffer modules are no longer required and Spring Boot’s dependency management for them has been removed.

Support for the higher-level ElasticsearchClient and the Spring Data Elasticsearch-provided ReactiveElasticsearchClient remains. It has been updated to use the new low-level client.

Kafka Streams Customization

Spring Boot’s StreamBuilderFactoryBeanCustomizer has been removed in favor of Spring Kafka’s StreamsBuilderFactoryBeanConfigurer. When migrating to the new configurer, be aware that it implements Ordered with a default value of 0.

Actuator Endpoint Optional Parameters

Actuator endpoint parameters can be flagged optional using the new, technology-independent, OptionalParameter annotation. If you are using JSpecify, you can also use org.jspecify.annotation.Nullable. Finally, Kotlin null safety is now supported as well.

New and Noteworthy

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

Miscellaneous

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

  • Public members (aside from constants) have been removed from auto-configuration classes. Auto-configurations never have been public API and now this is enforced through Java mechanisms.

Deprecations in Spring Boot 4.0.0-M2

*

Clone this wiki locally