-
Notifications
You must be signed in to change notification settings - Fork 41.6k
Spring Boot 4.0.0 M2 Release Notes
For changes in earlier milestones, please refer to:
To help with upgrading, a migration guide is available.
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.
Any interfaces annotated with @org.springframework.web.service.registry.HttpServiceClient are now automatically registered if they are found in packages scanned by Spring Boot auto-configuration.
We will be adding more documentation around this feature and general HTTP Service Client support in a later milestone.
Auto-configuration has been added for API Versioning with Spring MVC and with Spring WebFlux.
API Versioning can be configured using the spring.mvc.apiversion.* or spring.webflux.apiversion.* properties.
For more advanced control, beans of type ApiVersionResolver, ApiVersionParser and ApiVersionDeprecationHandler can be defined. See the reference documentation (MVC, WebFlux) for further details.
A new module, spring-boot-autoconfigure-classic has been introduced.
It provides a similar experience to the less-modular Spring Boot 3 by providing access to all of Spring Boot’s auto-configuration classes without the transitive dependencies to which they react
A new starter, spring-boot-starter-opentelemetry has been added.
This starter brings in all necessary dependencies to export metrics and traces over OTLP.
It will also auto-configure the OpenTelemetry SDK.
The following modules have been renamed:
-
spring-boot-metrics→spring-boot-micrometer-metrics -
spring-boot-observation→spring-boot-micrometer-observation -
spring-boot-tracing→spring-boot-micrometer-tracing
Each module’s root package has also been updated:
-
org.springframework.boot.metrics→org.springframework.boot.micrometer.metrics -
org.springframework.boot.observation→org.springframework.boot.micrometer.observation -
org.springframework.boot.tracing→org.springframework.boot.micrometer.tracing
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
HttpClientare now configured to use virtual threading whenspring.threads.virtual.enabledistrue. -
A
logging.console.enabledproperty has been introduced. Setting it tofalsedisables console logging.