-
Notifications
You must be signed in to change notification settings - Fork 41.4k
Spring Boot 4.0.0 M2 Release Notes
Actuator endpoint parameters no longer can use javax.annotations.NonNull
to declare that a parameter is optional.
This includes the now deprecated org.springframework.lang.Nullable
.
If you are using this annotation, you should migrate to either OptionalParameter
, or org.jspecify.annotations.Nullable
.
Spring Boot 4.0 requires a Servlet 6.1 baseline, with which Undertow is not yet compatible. As a result, Undertow support is dropped, including the undertow starter and the ability to use Undertow as an embedded server. We do not recommend deploying Spring Boot 4.0 applications to a non-Servlet 6.1 compliant container.
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.
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
.
Spring Boot 4.0.0-M2 adds JSpecify nullability annotations. If you’re using a null checker in your build or using Kotlin, this could lead to compilation failures because of now nullable or non-nullable types.
Tip
|
Check the configuration changelog for a complete overview of the changes in configuration. |
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.
Gradle 9 is now supported for building Spring Boot applications. Support for Gradle 8.x (8.14 or later) remains.
A new starter, spring-boot-starter-opentelemetry
has been added.
This starter brings in all necessary dependencies to export metrics and traces over OLTP.
It will also auto-configure the OpenTelemetry SDK.
Spring Boot 4.0.0-M2 moves to new versions of several Spring projects:
Numerous third-party dependencies have also been updated, some of the more noteworthy of which are the following:
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.
-
Auto-configured HTTP clients backed by the JDK
HttpClient
are now configured to use virtual threading whenspring.threads.virtual.enabled
istrue
.