You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Previously, the server.max-http-header-size was treated inconsistently across the four supported embedded web servers. When using Jetty, Netty, or Undertow it would configure the max HTTP request header size. When using Tomcat it would configure the max HTTP request and response header sizes. To address this inconsistency, server.max-http-header-size has been deprecated and a replacement, server.max-http-request-header-size, has been introduced. Both properties now only apply to the request header size, irrespective of the underlying web server. To limit the max header size of an HTTP response on Tomcat or Jetty (the only two servers that support such a setting), use a WebServerFactoryCustomizer.
Updated Phases for Graceful Shutdown
The phases used by the SmartLifecycle implementations for graceful shutdown have been updated. Graceful shutdown now begins in phase SmartLifecycle.DEFAULT_PHASE - 2048 and the web server is stopped in phase SmartLifecycle.DEFAULT_PHASE - 1024. Any SmartLifecycle implementations that were participating in graceful shutdown should be updated accordingly.
Configuring Gradle Tasks
Spring Boot?s Gradle tasks have been updated to consistently use Gradle?s Property support for their configuration. This will have little, if any, impact if you are using Gradle?s Groovy DSL. If you are using the Kotlin DSL, you may need to change the way that you set properties. For, example in Spring Boot 2.x, layering of the bootJar task could be disabled as follows:
Excluding Properties From build-info.properties With Gradle
As part of the previously described changes to configuring Gradle tasks, the mechanism for excluding properties from the generated build-info.properties file has also changed. Previously, properties could be excluded by setting them to null. This no longer works and has been replaced with a name-based mechanism:
springBoot {
buildInfo {
excludes = ['time']
}
}
The equivalent in the Gradle Kotlin DSL is as follows:
This release represents the culmination of the efforts to support GraalVM native images in Spring Boot, Spring Framework, and the rest of the Spring portfolio. See the updated documentation for more information on creating GraalVM native images with Spring Boot.
More Flexible Auto-configuration for Spring Data JDBC
The auto-configuration for Spring Data JDBC is now more flexible. Several auto-configured beans that are required by Spring Data JDBC are now conditional and can be replaced by defining a bean of the same type. The types of the beans that can now be replaced are the following:
With its 14.0 release, Infinispan has added support for Jakarta EE 9. As a result, we have been able to reinstate support for Infinispan. Please note that, where available, the -jakarta variant of Infinispan?s modules should be used.
Auto-Configuration for Prometheus Examplars
When there is a Micrometer Tracing Tracer bean and Prometheus is on the classpath, a SpanContextSupplier is now auto-configured. This supplier links metrics to traces by making the current trace ID and span ID available to Prometheus.
Log4j2 Enhancements
Log4j2 support has been updated with new extensions that provide the following functionality:
Numerous third-party dependencies have also been updated, some of the more noteworthy of which are the following:
Flyway 9.5.0
Hibernate 6.1.4.Final
Jackson 2.14.0-rc2
Jedis 4.3.0
Kafka 3.3.1
Kotlin 1.7.20
Lettuce 6.2.1.RELEASE
Liquibase 4.17.0
Log4j2 2.19.0
Logback 1.4.4
Micrometer 1.10.0-RC1
Micrometer Tracing 1.0.0-RC1
Mockito 4.8.1
MongoDB 4.8.0-beta0
Netty 4.1.84.Final
OpenTelemetry 1.19.0
SLF4J 2.0
SnakeYAML 1.33
Thymeleaf 3.1.0.RC1
Tomcat 10.0.27
Undertow 2.2.20.Final
Miscellaneous
Apart from the changes listed above, there have also been some minor tweaks and improvements including:
When using spring-rabbit-stream, a RabbitStreamTemplate and Environment will now be auto-configured whether or not spring.rabbitmq.listener.type is stream.
The spring.data prefix has been reserved for Spring Data and any properties under the prefix imply that Spring Data is required on the classpath.
Cassandra Properties
Configuration Properties for Cassandra have moved from spring.data.cassandra. to spring.cassandra..
Redis Properties
Configuration Properties for Redis have moved from spring.redis. to spring.data.redis. as redis auto-configuration requires Spring Data to be present on the classpath.
JMX Endpoint Exposure
By default, only the health endpoint is now exposed over JMX, to align with the default web endpoint exposure. This can be changed by configuring the management.endpoints.jmx.exposure.include and management.endpoints.jmx.exposure.exclude properties.
Actuator Endpoints Sanitization
Since, the /env and /configprops endpoints can contains sensitive values, all values are always masked by default. This used to be case only for keys considered to be sensitive.
Instead, this release opts for a more secure default. The keys-based approach has been removed in favor of a role based approach, similar to the health endpoint details. Whether unsanitized values are shown or not can be configured using a property which can have the following values:
NEVER - All values are sanitized.
ALWAYS - All values are present in the output (sanitizing functions will apply).
WHEN_AUTHORIZED - Values are present in the output only if a user is authorized (sanitizing functions will apply).
For JMX, users are always considered to be authorized. For HTTP, users are considered to be authorized if they are authenticated and have the specified roles.
Sanitization for the QuartzEndpoint is also configurable in the same way.
Dependency Management for ANTLR 2 Removed
Dependency management for ANTLR 2 (antlr:antlr) has been removed as it was no longer required. If you are using ANTLR 2 in your application, specify a version that meets your needs.
Flyway Configuration Customization
FlywayConfigurationCustomizer beans are now called to customize the FluentConfiguration after any Callback and JavaMigration beans have been added to the configuration. An application that defines Callback and JavaMigration beans and adds callbacks and Java migrations using a customizer may have to be updated to ensure that the intended callbacks and Java migrations are used.
@EnableBatchProcessing No Longer Required
Previously, @EnableBatchProcessing could be used to enable Spring Boot?s auto-configuration of Spring Batch. It is no longer required and should be removed from applications that want to use Boot?s auto-configuration. A bean that is annotated with @EnableBatchProcessing or that extends Batch?s DefaultBatchConfiguration can now be defined to tell the auto-configuration to back off, allowing the application to take complete control of how Batch is configured.
Mongo Health Check
The HealthIndicator for MongoDB now supports MongoDB?s Stable API. The buildInfo query has been replaced with isMaster and the response now contains maxWireVersion instead of version. As described in the MongoDB documentation, clients may use maxWireVersion to help negotiate compatibility with MongoDB. Note that maxWireVersion is an integer.
Auto-configuration Registration
Spring Boot 2.7 introduced a new META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports file for registering auto-configurations, while maintaining backwards compatibility with registration in spring.factories. With this release, support for registering auto-configurations in spring.factories has been removed in favor of the imports file.
This milestone brings a number of improvements and compatibility for building an application as a Native image:
Hints for the default LDIF file is contributed.
The Maven native profile now longer sets a classifier for the repackaged archive.
Native testing is now supported.
Jersey Support Reinstated
In its 3.0.6 release, Jersey now supports Spring Framework 6. As a result, support for Jersey has been reinstated both for application code and actuator web endpoints.
The @SpringBootTest annotation can now use the main of any discovered @SpringBootConfiguration class if it?s available. This means that any custom SpringApplication configuration performed by your main method can now be picked up by tests.
To use the main method for a test set the useMainMethod attribute of @SpringBootTest to UseMainMethod.ALWAYS or UseMainMethod.WHEN_AVAILABLE.
See the updated reference documentation for details.
Dependency Upgrades
Spring Boot 3.0.0-M5 moves to new versions of several Spring projects:
As of Spring Framework 6.0, the trailing slash matching configuration option has been deprecated and its default value set to false. This means that previously, the following controller would match both "GET /some/greeting" and "GET /some/greeting/":
@RestController
public class MyController {
@GetMapping("/some/greeting")
public String greeting {
return "Hello";
}
}
Developers should instead configure explicit redirects/rewrites through a proxy, a Servlet/web filter, or even declare the additional route explicitly on the controller handler (like @GetMapping("/some/greeting", "/some/greeting/") for more targeted cases.
Until your application fully adapts to this change, you can change the default with the following global configuration:
@Configuration
public class WebConfiguration implements WebMvcConfigurer {
@Override
public void configurePathMatch(PathMatchConfigurer configurer) {
configurer.setUseTrailingSlashMatch(true);
}
}
}
Spring Boot 3.0 uses Hibernate 6.1 by default. Please see the Hibernate 6.0 and 6.1 migration guides to learn how this may affect your application.
Dependency management and the spring-boot-starter-data-jpa starter have been updated to use the new org.hibernate.orm group ID for their Hibernate dependencies.
The spring.jpa.hibernate.use-new-id-generator-mappings configuration property has been removed as Hibernate no longer supports switching back to the old ID generator mappings.
Flyway 9.0
Spring Boot 3.0 uses Flyway 9.0 by default. Please see the Flyway release notes and blog post to learn how this may affect your application.
R2DBC 1.0
Spring Boot 3.0 uses R2DBC 1.0 by default. With the 1.0 release, R2DBC no longer publishes a bill of materials (bom) which has affected Spring Boot?s dependency management. The r2dbc-bom.version can no longer be used to override R2DBC?s version. In its place, several new properties for the individual and separately versioned modules are now available:
Support for Elasticsearch?s high-level REST client has been removed. In its place, auto-configuration for Elasticsearch?s new Java client has been introduced. Similarly, support for the Spring Data Elasticsearch templates that built on top of the high-level REST client has been removed. In its place, auto-configuration for the new templates that build upon the new Java client has been introduced. See the Elasticsearch section of the reference documentation for further details.
ReactiveElasticsearchRestClientAutoConfiguration
ReactiveElasticsearchRestClientAutoConfiguration has been renamed to ReactiveElasticsearchClientAutoConfiguration and has moved from org.springframework.boot.autoconfigure.data.elasticsearch to org.springframework.boot.autoconfigure.elasticsearch. Any auto-configuration exclusions or ordering should be updated accordingly.
YamlJsonParser Has Been Removed
YamlJsonParser has been removed as SnakeYAML?s JSON parsing was inconsistent with the other parser implementations. In the unlikely event that you were using YamlJsonParser directly, please migrate to one of the other JsonParser implementations.
ReactiveUserDetailsService
A ReactiveUserDetailsService is no longer auto-configured in the presence of an AuthenticationManagerResolver. If you application relies on ReactiveUserDetailService despite the presence of an AuthenticationManagerResolver, define your own ReactiveUserDetailsService bean that meets its needs.
Multiple Batch Jobs
Running multiple batch jobs is no longer supported. If the auto-configuration detects a single job is, it will be executed on startup. If multiple jobs are found in the context, a job name to execute on startup must be supplied by the user using the spring.batch.job.name property.
Spring Session Store Type
Explicitly configuring the store type for Spring session via spring.session.store-type is no longer supported. In case multiple session store repository implementations are detected on the classpath, a fixed order is used to determine which SessionRepository should be auto-configured. If Spring Boot?s defined ordering doesn?t meet your needs, you can define your own SessionRepository bean and cause the auto-configuration to back off.
Minimum Requirements Changes
Spring Boot 3.0.0-M4 makes the following changes to the minimum supported versions:
More use cases are supported in this milestone, including the actuator (including the use of a separate management context).
Making a PUT to Prometheus Push Gateway on Shutdown
The Push Gateway can be configured to perform a PUT on shutdown. To do so, set management.prometheus.metrics.export.pushgateway.shutdown-operation to put. Additionally, the existing push setting has been deprecated and post should now be used instead.
Hibernate Metrics Auto-configuration Reinstated
With the upgrade to Hibernate 6.1, its hibernate-micrometer module is now compatible with Jakarta EE 9. As a result, auto-configuration for Hibernate metrics has been reinstated.
Elasticsearch Java Client
Auto-configuration for the new Elasticsearch Java Client has been introduced. It can be configured using the existing spring.elasticsearch.* configuration properties.
Auto-configuration of JdkClientHttpConnector
In the absence of Reactor Netty, Jetty?s reactive client, and the Apache HTTP client a JdkClientHttpConnector will now be auto-configured. This allows WebClient to be used with the JDK?s HttpClient.
Dependency Upgrades
Spring Boot 3.0.0-M4 moves to new versions of several Spring projects:
We have moved the properties controlling the actuator metrics export. The old schema was management.metrics.export.<product>, the new one is management.<product>.metrics.export (Example: the prometheus properties moved from management.metrics.export.prometheus to management.prometheus.metrics.export). If you are using the spring-boot-properties-migrator, you will get notified at startup. See #30381 for details.
Simplifed Main Class Name Resolution with Gradle
When building an application with Gradle, resolution of the name of the application?s main class has been simplified and made consistent. bootJar, bootRun, and bootWar now all resolve the name of the main class name by looking for it in the output of the main source set. This removes a small risk that the tasks may not have used the same main class name by default. If you were relying on the main class being resolved from a location outside of the main source set?s output, update your Gradle configuration to configure the main class name using the mainClass property of the springBoot DSL:
Alternatively, you can configure the classpath property of the resolveMainClassName task to search in locations other than the main source set?s output directories.
Running Your Application in the Maven Process
The fork attribute of spring-boot:run and spring-boot:start that was deprecated in Spring Boot 2.7 has been removed.
SAML2 Relying Party Configuration
Support for properties under spring.security.saml2.relyingparty.registration.{id}.identity-provider have been removed. Use the new properties under spring.security.saml2.relyingparty.registration.{id}.asserting-party as a replacement.
Embedded MongoDB
Auto-configuration and dependency management for Flapdoodle embedded MongoDB has been removed. If you are using embedded MongoDB for testing, use the auto-configuration library provided by the Flapdoodle project or modify the tests to use the Testcontainers project instead of embedded MongoDB.
Logging Date Format
The default format for the date and time component of log messages for Logback and Log4j2 has changed to align with the ISO-8601 standard. The new default format yyyy-MM-dd?T?HH:mm:ss.SSSXXX uses a T to separate the date and time instead of a space character and adds the timezone offset to the end. The LOG_DATEFORMAT_PATTERN environment variable or logging.pattern.dateformat property can be used to restore the previous default value of yyyy-MM-dd HH:mm:ss.SSS.
Support for Apache Solr Removed
Support for Apache Solr has been removed as its Jetty-based client, Http2SolrClient, is not compatible with Jetty 11.
Auto-configuration of Micrometer?s JvmInfoMetrics
Micrometer?s JvmInfoMetrics is now auto-configured. Any manually configured JvmInfoMetrics bean definition can be removed.
With its 5.0 release, REST Assured is compatible with Jakarta EE 9 and Groovy 4.0. As a result, support has been reinstated.
Reinstated Support for Pooled JMS
With its 5.0 release, Pooled JMS is compatible with Jakarta EE 9. As a result, support has been reinstated and can be used with Apache Artemis by setting spring.artemis.pool.enabled to true.
Auto-configuration for Micrometer Observation API
Spring Boot now auto-configures an instance of ObservationRegistry for you. If micrometer-core is on the classpath, a TimerObservationHandler is registered on the ObservationRegistry, which means that every stopped Observation leads to a timer. ObservationPredicate, GlobalTagsProvider and ObservationHandler are automatically registered on the ObservationRegistry. You can use ObservationRegistryCustomizer to further customize the ObservationRegistry if you need to. See #29666 for details.
Auto-configuration for Micrometer Tracing
Spring Boot now auto-configures Micrometer Tracing for you. This includes support for Brave, OpenTelemetry, Zipkin and Wavefront. When using the Micrometer Observation API, finishing observations will lead to spans reported to Zipkin or Wavefront. Tracing can be controlled with properties under management.tracing. Zipkin can be configured with management.zipkin.tracing, while Wavefront uses management.wavefront. To use, for example Wavefront with Brave, these dependencies are needed:
Auto-configuration for Micrometer?s OtlpMeterRegistry
An OtlpMeterRegistry is now auto-configured when io.micrometer:micrometer-registry-otlp is on the classpath. The meter registry can be configured using management.otlp.metrics.export.* properties.
Enabling Async Acks with Apache Kafka
A new configuration property, spring.kafka.listener.async-acks, for enabling async acks with Kafka has been added. To enable async acks, set the property to true. The property only applies when spring.kafka.listener.async-mode is set to manual or manual-immediate.
Dependency Upgrades
Spring Boot 3.0.0-M3 moves to new versions of several Spring projects:
Spring Boot 3.0 M2 makes the following changes to its minimum supported versions:
Groovy 4.0
RxJava Dependency Management
Dependency management for RxJava 1.x and 2.x has been removed and dependency management for RxJava 3 has been added in its place.
Image Banner Support Removed
Support for image-based application banners has been removed. banner.gif, banner.jpg, and banner.png files are now ignored and should be replaced with a text-based banner.txt file.
Micrometer binders
The Micrometer team moved the binders to a separate micrometer module named micrometer-binders. To prevent split packages, the imports have changed, too. If you are using the old binders, please adjust your imports from io.micrometer.core.instrument.binder to io.micrometer.binder.
@ConstructingBinding No Longer Needed at the Type Level
@ConstructorBinding is no longer needed at the type level on @ConfigurationProperties classes and should be removed. When a class or record has multiple constructors, it may still be used on a constructor to indicate which one should be used for property binding.
Support for EhCache 3 has been reinstated as it is now compatible with Jakarta EE 9.
Support has been added in a separate artifact. To use it your application, make sure to add the dependency with the jakarta classifier.
Reinstated Support for H2 Console
Support for H2?s Console has been reinstated as it is now compatible with Jakarta EE 9.
Improved @ConstructorBinding Detection
When using constructor bound @ConfigurationProperties the @ConstructorBinding annotation is no longer required if the class has a single parameterized constructor. If you have more than one constructor, you?ll still need to use @ConstructorBinding to tell Spring Boot which one to use.
For most users, this updated logic will allow for simpler @ConfigurationProperties classes. If, however, you have a @ConfigurationProperties and you want to inject beans into the constructor rather than binding it, you?ll now need to add an @Autowired annotation.
Dependency Upgrades
Spring Boot 3.0.0-M2 moves to new versions of several Spring projects:
Classes, methods and properties that were deprecated in Spring Boot 2.x have been removed in this release. Please ensure that you aren?t calling deprecated methods before upgrading.
Minimum Requirements Changes
Spring Boot 3.0 makes the following changes to its minimum supported versions:
Gradle 7.3
Jakarta EE 9
Java 17
Kotlin 1.6
Spring Framework 6
Jakarta EE 9
Where Spring Boot depends upon a Jakarta EE specification, 3.0 has upgraded to the version that is included in Jakarta EE 9. For example, Spring Boot 3.0 uses the Servlet 5.0 and JPA 3.0 specifications.
To differentiate between modules that support Jakarta EE 8 and modules that support Jakarta EE 9, some projects have published their Jakarta EE 9-compatible modules with different artifact IDs. For example, Undertow uses a -jakartaee9 suffix and Hibernate uses -jakarta. Generally speaking, Spring Boot?s starter modules should handle this change for you. If you are declaring dependencies on third-party modules directly, you may need to update your dependency declarations to use the EE 9-compatible artifact IDs.
As part of this upgrade to Jakarta EE 9, support for some dependencies has been reduced or removed where support was not available. We hope to reinstate support as the ecosystem gradually adapts to the new package names in Jakarta EE 9. In the meantime, support for the following has been removed:
EhCache 3
H2?s web console
Hibernate?s metrics
Infinispan
Jolokia
Pooled JMS
REST Assured
SMTP appending with Logback
SMTP appending with Log4j 2
Jersey
Support for Jersey has been temporarily removed as it does not yet support Spring Framework 6.
Removed Support
Support for the following dependencies has been removed in Spring Boot 3.0:
Apache ActiveMQ
Atomikos
EhCache 2
Hazelcast 3
JSON-B
Dependency management for Apache Johnzon has been removed in favor of Eclipse Yasson. A Jakarta EE 9-compatible version of Apache Johnzon can be used with Spring Boot 3, but you will now have to specify a version in your dependency declaration.
labels: ["3.0.0","epic"]
Spring Boot 3.0.0 RC1 Release Notes
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0.0-RC1-Release-Notes
For changes in earlier milestones, please refer to:
v3.0.0 M1
v3.0.0 M2
v3.0.0 M3
v3.0.0 M4
v3.0.0 M5
Upgrading from Spring Boot 2.x
server.max-http-header-size
Previously, the
server.max-http-header-size
was treated inconsistently across the four supported embedded web servers. When using Jetty, Netty, or Undertow it would configure the max HTTP request header size. When using Tomcat it would configure the max HTTP request and response header sizes. To address this inconsistency,server.max-http-header-size
has been deprecated and a replacement,server.max-http-request-header-size
, has been introduced. Both properties now only apply to the request header size, irrespective of the underlying web server. To limit the max header size of an HTTP response on Tomcat or Jetty (the only two servers that support such a setting), use aWebServerFactoryCustomizer
.Updated Phases for Graceful Shutdown
The phases used by the
SmartLifecycle
implementations for graceful shutdown have been updated. Graceful shutdown now begins in phaseSmartLifecycle.DEFAULT_PHASE - 2048
and the web server is stopped in phaseSmartLifecycle.DEFAULT_PHASE - 1024
. AnySmartLifecycle
implementations that were participating in graceful shutdown should be updated accordingly.Configuring Gradle Tasks
Spring Boot?s Gradle tasks have been updated to consistently use Gradle?s
Property
support for their configuration. This will have little, if any, impact if you are using Gradle?s Groovy DSL. If you are using the Kotlin DSL, you may need to change the way that you set properties. For, example in Spring Boot 2.x, layering of thebootJar
task could be disabled as follows:tasks.named<BootJar>("bootJar") {
layered {
isEnabled = false
}
}
In 3.0, the following must be used:
tasks.named<BootJar>("bootJar") {
layered {
enabled.set(false)
}
}
Please refer to the Gradle plugin?s reference documentation for further examples
Excluding Properties From build-info.properties With Gradle
As part of the previously described changes to configuring Gradle tasks, the mechanism for excluding properties from the generated
build-info.properties
file has also changed. Previously, properties could be excluded by setting them tonull
. This no longer works and has been replaced with a name-based mechanism:springBoot {
buildInfo {
excludes = ['time']
}
}
The equivalent in the Gradle Kotlin DSL is as follows:
springBoot {
buildInfo {
excludes.set(setOf("time"))
}
}
Minimum Requirements Changes
None.
New and Noteworthy
Tip
Check the configuration changelog for a complete overview of the changes in configuration.
GraalVM Native Image Support
This release represents the culmination of the efforts to support GraalVM native images in Spring Boot, Spring Framework, and the rest of the Spring portfolio. See the updated documentation for more information on creating GraalVM native images with Spring Boot.
More Flexible Auto-configuration for Spring Data JDBC
The auto-configuration for Spring Data JDBC is now more flexible. Several auto-configured beans that are required by Spring Data JDBC are now conditional and can be replaced by defining a bean of the same type. The types of the beans that can now be replaced are the following:
org.springframework.data.jdbc.core.JdbcAggregateTemplate
org.springframework.data.jdbc.core.convert.DataAccessStrategy
org.springframework.data.jdbc.core.convert.JdbcConverter
org.springframework.data.jdbc.core.convert.JdbcCustomConversions
org.springframework.data.jdbc.core.mapping.JdbcMappingContext
org.springframework.data.relational.RelationalManagedTypes
org.springframework.data.relational.core.dialect.Dialect
Support for Infinispan Reinstated
With its 14.0 release, Infinispan has added support for Jakarta EE 9. As a result, we have been able to reinstate support for Infinispan. Please note that, where available, the
-jakarta
variant of Infinispan?s modules should be used.Auto-Configuration for Prometheus Examplars
When there is a Micrometer Tracing
Tracer
bean and Prometheus is on the classpath, aSpanContextSupplier
is now auto-configured. This supplier links metrics to traces by making the current trace ID and span ID available to Prometheus.Log4j2 Enhancements
Log4j2 support has been updated with new extensions that provide the following functionality:
Profile-specific Configuration
Environment Properties Lookup
Log4j2 System Properties
For details, please see the updated documentation
Logback Configuration in a Native Image
logback.xml
andlogback-spring.xml
can now be used to configure logging in an application that is compiled to a GraalVM native image.Dependency Upgrades
Spring Boot 3.0.0-RC1 moves to new versions of several Spring projects:
Spring AMQP 3.0.0-RC1
Spring Batch 5.0.0-RC1
Spring Data 2022.0.0-RC1
Spring Framework 6.0.0-RC2
Spring GraphQL 1.1.0-RC1
Spring HATEOAS 2.0.0-RC1
Spring Integration 6.0.0-RC1
Spring Kafka 3.0.0-RC1
Spring LDAP 3.0.0-RC1
Spring REST Docs 3.0.0-RC1
Spring Retry 2.0.0-RC1
Spring Security 6.0.0-RC1
Spring Session 2022.0.0-RC1
Spring WS 4.0.0-RC1
Numerous third-party dependencies have also been updated, some of the more noteworthy of which are the following:
Flyway 9.5.0
Hibernate 6.1.4.Final
Jackson 2.14.0-rc2
Jedis 4.3.0
Kafka 3.3.1
Kotlin 1.7.20
Lettuce 6.2.1.RELEASE
Liquibase 4.17.0
Log4j2 2.19.0
Logback 1.4.4
Micrometer 1.10.0-RC1
Micrometer Tracing 1.0.0-RC1
Mockito 4.8.1
MongoDB 4.8.0-beta0
Netty 4.1.84.Final
OpenTelemetry 1.19.0
SLF4J 2.0
SnakeYAML 1.33
Thymeleaf 3.1.0.RC1
Tomcat 10.0.27
Undertow 2.2.20.Final
Miscellaneous
Apart from the changes listed above, there have also been some minor tweaks and improvements including:
spring-rabbit-stream
, aRabbitStreamTemplate
andEnvironment
will now be auto-configured whether or notspring.rabbitmq.listener.type
isstream
.Deprecations in Spring Boot 3.0
None.
Spring Boot 3.0.0 M5 Release Notes
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0.0-M5-Release-Notes#spring-boot-300-m5-release-notes
For changes in earlier milestones, please refer to:
v3.0.0 M1
v3.0.0 M2
v3.0.0 M3
v3.0.0 M4
Upgrading from Spring Boot 2.x
Changes to Data properties
The
spring.data
prefix has been reserved for Spring Data and any properties under the prefix imply that Spring Data is required on the classpath.Cassandra Properties
Configuration Properties for Cassandra have moved from
spring.data.cassandra.
tospring.cassandra.
.Redis Properties
Configuration Properties for Redis have moved from
spring.redis.
tospring.data.redis.
as redis auto-configuration requires Spring Data to be present on the classpath.JMX Endpoint Exposure
By default, only the health endpoint is now exposed over JMX, to align with the default web endpoint exposure. This can be changed by configuring the
management.endpoints.jmx.exposure.include
andmanagement.endpoints.jmx.exposure.exclude
properties.Actuator Endpoints Sanitization
Since, the
/env
and/configprops
endpoints can contains sensitive values, all values are always masked by default. This used to be case only for keys considered to be sensitive.Instead, this release opts for a more secure default. The keys-based approach has been removed in favor of a role based approach, similar to the health endpoint details. Whether unsanitized values are shown or not can be configured using a property which can have the following values:
NEVER
- All values are sanitized.ALWAYS
- All values are present in the output (sanitizing functions will apply).WHEN_AUTHORIZED
- Values are present in the output only if a user is authorized (sanitizing functions will apply).For JMX, users are always considered to be authorized. For HTTP, users are considered to be authorized if they are authenticated and have the specified roles.
Sanitization for the QuartzEndpoint is also configurable in the same way.
Dependency Management for ANTLR 2 Removed
Dependency management for ANTLR 2 (
antlr:antlr
) has been removed as it was no longer required. If you are using ANTLR 2 in your application, specify a version that meets your needs.Flyway Configuration Customization
FlywayConfigurationCustomizer
beans are now called to customize theFluentConfiguration
after anyCallback
andJavaMigration
beans have been added to the configuration. An application that definesCallback
andJavaMigration
beans and adds callbacks and Java migrations using a customizer may have to be updated to ensure that the intended callbacks and Java migrations are used.@EnableBatchProcessing
No Longer RequiredPreviously,
@EnableBatchProcessing
could be used to enable Spring Boot?s auto-configuration of Spring Batch. It is no longer required and should be removed from applications that want to use Boot?s auto-configuration. A bean that is annotated with@EnableBatchProcessing
or that extends Batch?sDefaultBatchConfiguration
can now be defined to tell the auto-configuration to back off, allowing the application to take complete control of how Batch is configured.Mongo Health Check
The
HealthIndicator
for MongoDB now supports MongoDB?s Stable API. ThebuildInfo
query has been replaced withisMaster
and the response now containsmaxWireVersion
instead ofversion
. As described in the MongoDB documentation, clients may usemaxWireVersion
to help negotiate compatibility with MongoDB. Note thatmaxWireVersion
is an integer.Auto-configuration Registration
Spring Boot 2.7 introduced a new
META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
file for registering auto-configurations, while maintaining backwards compatibility with registration inspring.factories
. With this release, support for registering auto-configurations inspring.factories
has been removed in favor of the imports file.Minimum Requirements Changes
New and Noteworthy
Tip
Check the configuration changelog for a complete overview of the changes in configuration.
Native Support
This milestone brings a number of improvements and compatibility for building an application as a Native image:
Hints for the default LDIF file is contributed.
The Maven
native
profile now longer sets a classifier for the repackaged archive.Native testing is now supported.
Jersey Support Reinstated
In its 3.0.6 release, Jersey now supports Spring Framework 6. As a result, support for Jersey has been reinstated both for application code and actuator web endpoints.
@SpringBootTest with Main Methods
The
@SpringBootTest
annotation can now use themain
of any discovered@SpringBootConfiguration
class if it?s available. This means that any customSpringApplication
configuration performed by your main method can now be picked up by tests.To use the
main
method for a test set theuseMainMethod
attribute of@SpringBootTest
toUseMainMethod.ALWAYS
orUseMainMethod.WHEN_AVAILABLE
.See the updated reference documentation for details.
Dependency Upgrades
Spring Boot 3.0.0-M5 moves to new versions of several Spring projects:
Spring AMQP 3.0.0-M4
Spring Batch 5.0.0-M6
Spring Data 2022.0.0-M6
Spring Framework 6.0.0-M6
Spring GraphQL 1.1.0-M1
Spring HATEOAS 2.0.0-M6
Spring Integration 6.0.0-M5
Spring Kafka 3.0.0-M6
Spring LDAP 3.0.0-M4
Spring Retry 2.0.0-M1
Spring Security 6.0.0-M7
Spring Session 2022.0.0-M3
Numerous third-party dependencies have also been updated, some of the more noteworthy of which are the following:
SnakeYAML 1.32
GraphQL Java 19.2
Postgresql 42.5
Maven Jar Plugin 3.3.0
Selenium 4.4.0
Selenium HtmlUnit 3.64.0
REST Assured 5.2.0
Rabbit AMQP Client 5.16.0
Rabbit Stream Client 0.7.0
Maven Shade Plugin 3.4.0
Mockito 4.8.0
Miscellaneous
Apart from the changes listed above, there have also been some minor tweaks and improvements including:
Multiple hosts can now be configured for MongoDB using the
spring.data.mongodb.additional-hosts
property.DiskSpaceHealthIndicator
now includes its path in its log message and its health details.WebJars resource handler path pattern can be customized using
spring.mvc.webjars-path-pattern
orspring.webflux.webjars-path-pattern
.Elasticsearch?s socketKeepAlive property can be configured using the
spring.elasticsearch.socket-keep-alive
property.The
spring.mvc.ignore-default-model-on-redirect
has been deprecated to align with upstream Spring Framework changes.Deprecations in Spring Boot 3.0
Spring Boot 3.0.0 M4 Release Notes
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0.0-M4-Release-Notes
For changes in earlier milestones, please refer to:
v3.0.0 M1
v3.0.0 M2
v3.0.0 M3
Upgrading from Spring Boot 2.x
Spring MVC and WebFlux URL matching changes
As of Spring Framework 6.0, the trailing slash matching configuration option has been deprecated and its default value set to
false
. This means that previously, the following controller would match both "GET /some/greeting" and "GET /some/greeting/":As of this Spring Framework change, "GET /some/greeting/" doesn?t match anymore by default.
Developers should instead configure explicit redirects/rewrites through a proxy, a Servlet/web filter, or even declare the additional route explicitly on the controller handler (like
@GetMapping("/some/greeting", "/some/greeting/")
for more targeted cases.Until your application fully adapts to this change, you can change the default with the following global configuration:
PathMatchConfigurer
] #248Hibernate 6.1
Spring Boot 3.0 uses Hibernate 6.1 by default. Please see the Hibernate 6.0 and 6.1 migration guides to learn how this may affect your application.
Dependency management and the
spring-boot-starter-data-jpa
starter have been updated to use the neworg.hibernate.orm
group ID for their Hibernate dependencies.The
spring.jpa.hibernate.use-new-id-generator-mappings
configuration property has been removed as Hibernate no longer supports switching back to the old ID generator mappings.Flyway 9.0
Spring Boot 3.0 uses Flyway 9.0 by default. Please see the Flyway release notes and blog post to learn how this may affect your application.
R2DBC 1.0
Spring Boot 3.0 uses R2DBC 1.0 by default. With the 1.0 release, R2DBC no longer publishes a bill of materials (bom) which has affected Spring Boot?s dependency management. The
r2dbc-bom.version
can no longer be used to override R2DBC?s version. In its place, several new properties for the individual and separately versioned modules are now available:oracle-r2dbc.version
(com.oracle.database.r2dbc:oracle-r2dbc
)r2dbc-h2.version
(io.r2dc:r2dbc-h2
)r2dbc-pool.version
(io.r2dc:r2dbc-pool
)r2dbc-postgres.version
(io.r2dc:r2dbc-postgres
)r2dbc-proxy.version
(io.r2dc:r2dbc-proxy
)r2dbc-spi.version
(io.r2dc:r2dbc-spi
)Elasticsearch Clients and Templates
Support for Elasticsearch?s high-level REST client has been removed. In its place, auto-configuration for Elasticsearch?s new Java client has been introduced. Similarly, support for the Spring Data Elasticsearch templates that built on top of the high-level REST client has been removed. In its place, auto-configuration for the new templates that build upon the new Java client has been introduced. See the Elasticsearch section of the reference documentation for further details.
ReactiveElasticsearchRestClientAutoConfiguration
ReactiveElasticsearchRestClientAutoConfiguration
has been renamed toReactiveElasticsearchClientAutoConfiguration
and has moved fromorg.springframework.boot.autoconfigure.data.elasticsearch
toorg.springframework.boot.autoconfigure.elasticsearch
. Any auto-configuration exclusions or ordering should be updated accordingly.YamlJsonParser Has Been Removed
YamlJsonParser
has been removed as SnakeYAML?s JSON parsing was inconsistent with the other parser implementations. In the unlikely event that you were usingYamlJsonParser
directly, please migrate to one of the otherJsonParser
implementations.ReactiveUserDetailsService
A
ReactiveUserDetailsService
is no longer auto-configured in the presence of anAuthenticationManagerResolver
. If you application relies onReactiveUserDetailService
despite the presence of anAuthenticationManagerResolver
, define your ownReactiveUserDetailsService
bean that meets its needs.Multiple Batch Jobs
Running multiple batch jobs is no longer supported. If the auto-configuration detects a single job is, it will be executed on startup. If multiple jobs are found in the context, a job name to execute on startup must be supplied by the user using the
spring.batch.job.name
property.Spring Session Store Type
Explicitly configuring the store type for Spring session via
spring.session.store-type
is no longer supported. In case multiple session store repository implementations are detected on the classpath, a fixed order is used to determine whichSessionRepository
should be auto-configured. If Spring Boot?s defined ordering doesn?t meet your needs, you can define your own SessionRepository bean and cause the auto-configuration to back off.Minimum Requirements Changes
Spring Boot 3.0.0-M4 makes the following changes to the minimum supported versions:
Gradle 7.5
Hibernate 6.1
Kotlin 1.7
New and Noteworthy
Tip
Check the configuration changelog for a complete overview of the changes in configuration.
Native Image support
More use cases are supported in this milestone, including the actuator (including the use of a separate management context).
Making a PUT to Prometheus Push Gateway on Shutdown
The Push Gateway can be configured to perform a
PUT
on shutdown. To do so, setmanagement.prometheus.metrics.export.pushgateway.shutdown-operation
toput
. Additionally, the existingpush
setting has been deprecated andpost
should now be used instead.Hibernate Metrics Auto-configuration Reinstated
With the upgrade to Hibernate 6.1, its
hibernate-micrometer
module is now compatible with Jakarta EE 9. As a result, auto-configuration for Hibernate metrics has been reinstated.Elasticsearch Java Client
Auto-configuration for the new Elasticsearch Java Client has been introduced. It can be configured using the existing
spring.elasticsearch.*
configuration properties.Auto-configuration of JdkClientHttpConnector
In the absence of Reactor Netty, Jetty?s reactive client, and the Apache HTTP client a
JdkClientHttpConnector
will now be auto-configured. This allowsWebClient
to be used with the JDK?sHttpClient
.Dependency Upgrades
Spring Boot 3.0.0-M4 moves to new versions of several Spring projects:
Spring Batch 5.0.0-M4
Spring Data 2022.0.0-M5
Spring Framework 6.0.0-M5
Spring HATEOAS 2.0.0-M5
Spring Integration 6.0.0-M4
Spring Kafka 3.0.0-M5
Spring REST Docs 3.0.0-M4
Spring Security 6.0.0-M6
Numerous third-party dependencies have also been updated, some of the more noteworthy of which are the following:
Flyway 9
Hibernate 6.1
Liquibase 4.13
Lettuce 6.2
Log4j 2.18
Micrometer 1.10.0-M3
Micrometer Tracing 1.0.0-M6
OkHttp 4.10
R2DBC 1.0
Reactor 2022.0.0-M4
Miscellaneous
Apart from the changes listed above, there have also been some minor tweaks and improvements including:
Micrometer?s
JvmCompilationMetrics
are now auto-configured.WebDriverScope
andWebDriverTestExecutionListener
have been made public to ease the use ofWebDriver
in custom test setup.A
DataSourceBuilder
can now be derived from a wrappedDataSource
.Existing Kafka topics can be modified using
spring.kafka.admin.modify-topic-configs
.Trusted proxies of Tomcat?s remote IP valve can be configured using
server.tomcat.remoteip.trusted-proxies
.Deprecations in Spring Boot 3.0
The
push
setting ofmanagement.prometheus.metrics.export.pushgateway.shutdown-operation
in favor ofpost
.@AutoConfigureMetrics
has been deprecated in favor of@AutoConfigureObservability
.Spring Boot 3.0.0 M3 Release Notes
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0.0-M3-Release-Notes
For changes in earlier milestones, please refer to:
v3.0.0 M1
v3.0.0 M2
Upgrading from Spring Boot 2.x
Minimum Requirements Changes
None.
Actuator Metrics Export Properties
We have moved the properties controlling the actuator metrics export. The old schema was
management.metrics.export.<product>
, the new one ismanagement.<product>.metrics.export
(Example: the prometheus properties moved frommanagement.metrics.export.prometheus
tomanagement.prometheus.metrics.export
). If you are using thespring-boot-properties-migrator
, you will get notified at startup. See #30381 for details.Simplifed Main Class Name Resolution with Gradle
When building an application with Gradle, resolution of the name of the application?s main class has been simplified and made consistent.
bootJar
,bootRun
, andbootWar
now all resolve the name of the main class name by looking for it in the output of the main source set. This removes a small risk that the tasks may not have used the same main class name by default. If you were relying on the main class being resolved from a location outside of the main source set?s output, update your Gradle configuration to configure the main class name using themainClass
property of thespringBoot
DSL:springBoot {
mainClass = "com.example.Application"
}
Alternatively, you can configure the
classpath
property of theresolveMainClassName
task to search in locations other than the main source set?s output directories.Running Your Application in the Maven Process
The
fork
attribute ofspring-boot:run
andspring-boot:start
that was deprecated in Spring Boot 2.7 has been removed.SAML2 Relying Party Configuration
Support for properties under
spring.security.saml2.relyingparty.registration.{id}.identity-provider
have been removed. Use the new properties underspring.security.saml2.relyingparty.registration.{id}.asserting-party
as a replacement.Embedded MongoDB
Auto-configuration and dependency management for Flapdoodle embedded MongoDB has been removed. If you are using embedded MongoDB for testing, use the auto-configuration library provided by the Flapdoodle project or modify the tests to use the Testcontainers project instead of embedded MongoDB.
Logging Date Format
The default format for the date and time component of log messages for Logback and Log4j2 has changed to align with the ISO-8601 standard. The new default format
yyyy-MM-dd?T?HH:mm:ss.SSSXXX
uses aT
to separate the date and time instead of a space character and adds the timezone offset to the end. TheLOG_DATEFORMAT_PATTERN
environment variable orlogging.pattern.dateformat
property can be used to restore the previous default value ofyyyy-MM-dd HH:mm:ss.SSS
.Support for Apache Solr Removed
Support for Apache Solr has been removed as its Jetty-based client,
Http2SolrClient
, is not compatible with Jetty 11.Auto-configuration of Micrometer?s JvmInfoMetrics
Micrometer?s
JvmInfoMetrics
is now auto-configured. Any manually configuredJvmInfoMetrics
bean definition can be removed.New and Noteworthy
Tip
Check the configuration changelog for a complete overview of the changes in configuration.
Reinstated Support for REST Assured
With its 5.0 release, REST Assured is compatible with Jakarta EE 9 and Groovy 4.0. As a result, support has been reinstated.
Reinstated Support for Pooled JMS
With its 5.0 release, Pooled JMS is compatible with Jakarta EE 9. As a result, support has been reinstated and can be used with Apache Artemis by setting
spring.artemis.pool.enabled
totrue
.Auto-configuration for Micrometer Observation API
Spring Boot now auto-configures an instance of
ObservationRegistry
for you. Ifmicrometer-core
is on the classpath, aTimerObservationHandler
is registered on theObservationRegistry
, which means that every stoppedObservation
leads to a timer.ObservationPredicate
,GlobalTagsProvider
andObservationHandler
are automatically registered on theObservationRegistry
. You can useObservationRegistryCustomizer
to further customize theObservationRegistry
if you need to. See #29666 for details.Auto-configuration for Micrometer Tracing
Spring Boot now auto-configures Micrometer Tracing for you. This includes support for Brave, OpenTelemetry, Zipkin and Wavefront. When using the Micrometer Observation API, finishing observations will lead to spans reported to Zipkin or Wavefront. Tracing can be controlled with properties under
management.tracing
. Zipkin can be configured withmanagement.zipkin.tracing
, while Wavefront usesmanagement.wavefront
. To use, for example Wavefront with Brave, these dependencies are needed:implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'io.micrometer:micrometer-tracing-bridge-brave'
implementation 'io.micrometer:micrometer-tracing-reporter-wavefront'
Auto-configuration for Micrometer?s OtlpMeterRegistry
An
OtlpMeterRegistry
is now auto-configured whenio.micrometer:micrometer-registry-otlp
is on the classpath. The meter registry can be configured usingmanagement.otlp.metrics.export.*
properties.Enabling Async Acks with Apache Kafka
A new configuration property,
spring.kafka.listener.async-acks
, for enabling async acks with Kafka has been added. To enable async acks, set the property totrue
. The property only applies whenspring.kafka.listener.async-mode
is set tomanual
ormanual-immediate
.Dependency Upgrades
Spring Boot 3.0.0-M3 moves to new versions of several Spring projects:
Spring AMQP 3.0.0-M3
Spring Batch 5.0.0-M3
Spring Data 2022.0.0-M4
Spring HATEOAS 2.0.0-M3
Spring Integration 6.0.0-M3
Spring Kafka 3.0.0-M4
Spring REST Docs 3.0.0-M3
Spring Security 6.0.0-M5 (see also 6.0.0-M4)
Numerous third-party dependencies have also been updated, some of the more noteworthy of which are the following:
Flyway 8.5.11
Hibernate 5.6.9.Final
Micrometer 1.10.0-M2
Micrometer Tracing 1.0.0-M5
Netty 4.1.77.Final
Reactor Bom 2022.0.0-M2
Thymeleaf 3.1.0.M2
Tomcat 10.0.21
Miscellaneous
Apart from the changes listed above, there have also been some minor tweaks and improvements including:
Bean Validation
Configuration
can now be customised by defining aValidationConfigurationCustomizer
bean.Log4j2?s
Log4jBridgeHandler
is now used to route JUL-based logging into Log4j2 rather than routing through SLF4J.Deprecations in Spring Boot 3.0
management.metrics.export.<product>
are deprecated, the replacement ismanagement.<product>.metrics.export
. See above for more details.Spring Boot 3.0.0 M2 Release Notes
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0.0-M2-Release-Notes
For changes in earlier milestones, please refer to:
Upgrading from Spring Boot 2.x
Minimum Requirements Changes
Spring Boot 3.0 M2 makes the following changes to its minimum supported versions:
RxJava Dependency Management
Dependency management for RxJava 1.x and 2.x has been removed and dependency management for RxJava 3 has been added in its place.
Image Banner Support Removed
Support for image-based application banners has been removed.
banner.gif
,banner.jpg
, andbanner.png
files are now ignored and should be replaced with a text-basedbanner.txt
file.Micrometer binders
The Micrometer team moved the binders to a separate micrometer module named
micrometer-binders
. To prevent split packages, the imports have changed, too. If you are using the old binders, please adjust your imports fromio.micrometer.core.instrument.binder
toio.micrometer.binder
.@ConstructingBinding No Longer Needed at the Type Level
@ConstructorBinding
is no longer needed at the type level on@ConfigurationProperties
classes and should be removed. When a class or record has multiple constructors, it may still be used on a constructor to indicate which one should be used for property binding.New and Noteworthy
Tip
Check the configuration changelog for a complete overview of the changes in configuration.
Reinstated Support for EhCache 3
Support for EhCache 3 has been reinstated as it is now compatible with Jakarta EE 9.
Support has been added in a separate artifact. To use it your application, make sure to add the dependency with the
jakarta
classifier.Reinstated Support for H2 Console
Support for H2?s Console has been reinstated as it is now compatible with Jakarta EE 9.
Improved @ConstructorBinding Detection
When using constructor bound
@ConfigurationProperties
the@ConstructorBinding
annotation is no longer required if the class has a single parameterized constructor. If you have more than one constructor, you?ll still need to use@ConstructorBinding
to tell Spring Boot which one to use.For most users, this updated logic will allow for simpler
@ConfigurationProperties
classes. If, however, you have a@ConfigurationProperties
and you want to inject beans into the constructor rather than binding it, you?ll now need to add an@Autowired
annotation.Dependency Upgrades
Spring Boot 3.0.0-M2 moves to new versions of several Spring projects:
Spring AMQP 3.0.0-M2
Spring Batch 5.0.0-M2
Spring Data 2022.0.0-M3
Spring HATEOAS 2.0.0-M2
Spring Integration 6.0.0-M2
Spring Kafka 3.0.0-M3
Spring REST Docs 3.0.0-M2
Spring Security 6.0.0-M3 (see also 6.0.0-M2)
Spring WS 4.0.0-M2
Numerous third-party dependencies have also been updated, some of the more noteworthy of which are the following:
Groovy 4.0
Thymeleaf Layout Dialect 3.1
Deprecations in Spring Boot 3.0
Spring Boot 3.0.0 M1 Release Notes
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0.0-M1-Release-Notes
Upgrading from Spring Boot 2.x
Deprecations from Spring Boot 2.x
Classes, methods and properties that were deprecated in Spring Boot 2.x have been removed in this release. Please ensure that you aren?t calling deprecated methods before upgrading.
Minimum Requirements Changes
Spring Boot 3.0 makes the following changes to its minimum supported versions:
Gradle 7.3
Jakarta EE 9
Java 17
Kotlin 1.6
Spring Framework 6
Jakarta EE 9
Where Spring Boot depends upon a Jakarta EE specification, 3.0 has upgraded to the version that is included in Jakarta EE 9. For example, Spring Boot 3.0 uses the Servlet 5.0 and JPA 3.0 specifications.
To differentiate between modules that support Jakarta EE 8 and modules that support Jakarta EE 9, some projects have published their Jakarta EE 9-compatible modules with different artifact IDs. For example, Undertow uses a
-jakartaee9
suffix and Hibernate uses-jakarta
. Generally speaking, Spring Boot?s starter modules should handle this change for you. If you are declaring dependencies on third-party modules directly, you may need to update your dependency declarations to use the EE 9-compatible artifact IDs.As part of this upgrade to Jakarta EE 9, support for some dependencies has been reduced or removed where support was not available. We hope to reinstate support as the ecosystem gradually adapts to the new package names in Jakarta EE 9. In the meantime, support for the following has been removed:
EhCache 3
H2?s web console
Hibernate?s metrics
Infinispan
Jolokia
Pooled JMS
REST Assured
SMTP appending with Logback
SMTP appending with Log4j 2
Jersey
Support for Jersey has been temporarily removed as it does not yet support Spring Framework 6.
Removed Support
Support for the following dependencies has been removed in Spring Boot 3.0:
Apache ActiveMQ
Atomikos
EhCache 2
Hazelcast 3
JSON-B
Dependency management for Apache Johnzon has been removed in favor of Eclipse Yasson. A Jakarta EE 9-compatible version of Apache Johnzon can be used with Spring Boot 3, but you will now have to specify a version in your dependency declaration.
New and Noteworthy
Tip
Check the configuration changelog for a complete overview of the changes in configuration.
Dependency Upgrades
Spring Boot 3.0.0-M1 moves to new versions of several Spring projects:
Micrometer 2.0.0-M1
Spring AMQP 3.0.0-M1
Spring Batch 5.0.0-M1
Spring Data 2022.0.0-M1
Spring Framework 6.0.0-M2
Spring Integration 6.0.0-M1
Spring HATEOAS 2.0.0-M1
Spring Kafka 3.0.0-M1
Spring LDAP 3.0.0-M1
Spring REST Docs 3.0.0-M1
Spring Security 6.0.0-M1
Spring Session 2022.0.0-M1
Spring Web Services 4.0.0-M1
Numerous third-party dependencies have also been updated, some of the more noteworthy of which are the following:
Artemis 2.20.0
Hazelcast 5.0
Hibernate Validator 7.0
Jakarta Activation 2.0
Jakarta Annotation 2.0
Jakarta JMS 3.0
Jakarta JSON 2.0
Jakarta JSON Bind 3.0
Jakarta Mail 2.0
Jakarta Persistence 3.0
Jakarta Servlet 5.0
Jakarta Servlet JSP JSTL 2.0
Jakarta Transaction 2.0
Jakarta Validation 3.0
Jakarta WebSocket 2.0
Jakarta WS RS 3.0
Jakarta XML Bind 3.0
Jakarta XML Soap 2.0
Jetty 11
jOOQ 3.16
Tomcat 10
Miscellaneous
Apart from the changes listed above, there have also been some minor tweaks and improvements including:
Support for Java?s
SecurityManager
has been removed following its deprecation in the JDKSupport for Spring Framework?s
CommonsMultipartResolver
has been removed following its removal in Spring Framework 6Deprecations in Spring Boot 3.0
The text was updated successfully, but these errors were encountered: