Releases: spring-projects/spring-boot
v4.0.0
⭐ New Features
- Change tomcat and jetty runtime modules to starters #48175
- Rename spring-boot-kotlin-serialization to align with the name of the Kotlinx module that it pulls in #48076
🐞 Bug Fixes
- Error properties are a general web concern and should not be located beneath server.* #48201
- With both Jackson 2 and 3 on the classpath,
@JsonTestfails due to duplicate jacksonTesterFactoryBean #48198 - Gradle war task does not exclude starter POMs from lib-provided #48197
- spring.test.webclient.mockrestserviceserver.enabled is not aligned with its module's name #48193
- SslMeterBinder doesn't register metrics for dynamically added bundles if no bundles exist at bind time #48182
- Properties bound in the child management context ignore the parent's environment prefix #48177
- ssl.chain.expiry metrics doesn't update for dynamically registered SSL bundles #48171
- Starter for spring-boot-micrometer-metrics is missing #48161
- Elasticsearch client's sniffer functionality should not be enabled by default #48155
- spring-boot-starter-elasticsearch should depend on elasticsearch-java #48141
- Auto-configuration exclusions are checked using a different class loader to the one that loads auto-configuration classes #48132
- New arm64 macbooks fail to bootBuildImage due to incorrect platform image #48128
- Properties for configuring an isolated JsonMapper or ObjectMapper are incorrectly named #48116
- Buildpack fails with recent Docker installs due to hardcoded version in URL #48103
- Image building may fail when specifying a platform if an image has already been built with a different platform #48099
- Default values of Kotlinx Serialization JSON configuration properties are not documented #48097
- Custom XML converters should override defaults in HttpMessageConverters #48096
- Kotlin serialization is used too aggressively when other JSON libraries are available #48070
- PortInUseException incorrectly thrown on failure to bind port due to Netty IP misconfiguration #48059
- Auto-configured JCacheMetrics cannot be customized #48057
- WebSecurityCustomizer beans are excluded by WebMvcTest #48055
- Deprecated EnvironmentPostProcessor does not resolve arguments #48047
- RetryPolicySettings should refer to maxRetries, not maxAttempts #48023
- Devtools Restarter does not work with a parameterless main method #47996
- Dependency management for Kafka should not manage Scala 2.12 libraries #47991
- spring-boot-mail should depend on jakarta.mail:jakarta.mail-api and org.eclipse.angus:angus-mail instead of org.eclipse.angus:jakarta.mail #47983
- spring-boot-starter-data-mongodb-reactive has dependency on reactor-test #47982
- Support for ReactiveElasticsearchClient is in the wrong module #47848
📔 Documentation
- Removed property spring.test.webclient.register-rest-template is still documented #48199
- Mention support for detecting AWS ECS in "Deploying to the Cloud" #48170
- Revise AWS section of "Deploying to the Cloud" in reference manual #48163
- Fix typo in PortInUseException Javadoc #48134
- Correct section about required setters in "Type-safe Configuration Properties" #48131
- Use since attribute in configuration properties deprecation consistently #48122
- Document EndpointJsonMapper and management.endpoints.jackson.isolated-json-mapper #48115
- Document support for configuring servlet context init parameters using properties #48112
- Some configuration properties are not documented in the appendix #48095
- Clarify how warnings about soon-to-expire SSL certificates are reported #48063
- Document how to use ContextPropagatingTaskDecorator for propagating trace context over thread boundaries #48053
- Document the level of support for the OpenTelemetry APIs #47960
- Document that you need to build with Java 25 for buildpack build-image Graal support #45501
🔨 Dependency Upgrades
- Upgrade to Cassandra Driver 4.19.2 #48184
- Upgrade to DB2 JDBC 12.1.3.0 #48087
- Upgrade to Elasticsearch Client 9.2.1 #48137
- Upgrade to GraphQL Java 25.0 #48034
- Upgrade to Hibernate 7.1.8.Final #48150
- Upgrade to Jackson Bom 3.0.2 #48089
- Upgrade to Jetty 12.1.4 #48120
- Upgrade to Jetty Reactive HTTPClient 4.1.4 #48151
- Upgrade to jOOQ 3.19.28 #48090
- Upgrade to Kafka 4.1.1 #48185
- Upgrade to Logback 1.5.21 #48091
- Upgrade to Micrometer 1.16.0 #47820
- Upgrade to Micrometer Tracing 1.6.0 #47821
- Upgrade to MySQL 9.5.0 #48092
- Upgrade to Native Build Tools Plugin 0.11.3 #48051
- Upgrade to Neo4j Java Driver 6.0.2 #47997
- Upgrade to Prometheus Client 1.4.3 #48093
- Upgrade to Reactor Bom 2025.0.0 #47822
- Upgrade to Spring AMQP 4.0.0 #47823
- Upgrade to Spring Batch 6.0.0 #47834
- Upgrade to Spring Data Bom 2025.1.0 #47824
- Upgrade to Spring Framework 7.0.1 #48168
- Upgrade to Spring GraphQL 2.0.0 #47826
- Upgrade to Spring HATEOAS 3.0.0 #47827
- Upgrade to Spring Integration 7.0.0 #47828
- Upgrade to Spring Kafka 4.0.0 #47829
- Upgrade to Spring LDAP 4.0.0 #47999
- Upgrade to Spring Pulsar 2.0.0 #47830
- Upgrade to Spring RESTDocs 4.0.0 #47831
- Upgrade to Spring Security 7.0.0 #47832
- Upgrade to Spring Session 4.0.0 #48000
- Upgrade to Spring WS 5.0.0 #47833
- Upgrade to Testcontainers 2.0.2 [#48152](https://github.com/spring-...
v3.5.8
⚠️ Noteworthy changes
- This release contains a fix to get Testcontainers working with modern Docker versions. If this causes problems in your setup, you can downgrade the minimum Docker API, effectively reverting that change.
🐞 Bug Fixes
- Gradle war task does not exclude starter POMs from lib-provided #48196
- Testcontainers integration fails on Docker 29.0.0 #48192
- SslMeterBinder doesn't register metrics for dynamically added bundles if no bundles exist at bind time #48180
- Properties bound in the child management context ignore the parent's environment prefix #48176
- ssl.chain.expiry metrics doesn't update for dynamically registered SSL bundles #48153
- Auto-configuration exclusions are checked using a different class loader to the one that loads auto-configuration classes #48129
- New arm64 macbooks fail to bootBuildImage due to incorrect platform image #48127
- NullPointerException when using
@ConditionalOnSingleCandidatewith multiple manually registered singletons #48123 - Buildpack fails with recent Docker installs due to hardcoded version in URL #48102
- Image building may fail when specifying a platform if an image has already been built with a different platform #48098
- Undertow's ServletContext is destroy too early, making it unusable in
@PreDestroymethods #48061 - PortInUseException incorrectly thrown on failure to bind port due to Netty IP misconfiguration #48058
- Auto-configured JCacheMetrics cannot be customized #48056
- WebSecurityCustomizer beans are excluded by WebMvcTest #48054
- Devtools Restarter does not work with a parameterless main method #47987
- Setting 'max-uri-tags' does not prevent unlimited meter growth on any AutoConfiguredCompositeMeterRegistry #47923
- Docker response 407 is not handled correctly resulting in no error message #47900
- spring-boot-maven-plugin process-aot goal does not find package-private main method #47780
📔 Documentation
- Revise AWS section of "Deploying to the Cloud" in reference manual #48156
- Fix typo in PortInUseException Javadoc #48133
- Correct section about required setters in "Type-safe Configuration Properties" #48130
- Document EndpointObjectMapper and management.endpoints.jackson.isolated-object-mapper #48114
- Document support for configuring servlet context init parameters using properties #48111
- Clarify how warnings about soon-to-expire SSL certificates are reported #48062
- Document how to use ContextPropagatingTaskDecorator for propagating trace context over thread boundaries #48052
- Use since attribute in configuration properties deprecation consistently #47980
- BootstrapContext#getOrElseThrow has incorrect reference to IllegalStateException #47905
- Clarify when BootstrapContext get methods may return null rather than throwing an exception or calling the fallback supplier #47898
- Document that Actuator endpoint may have at most one extension of each type #47873
- Limit Kotlin API documentation to Kotlin-specific APIs #47859
- Adapt AOTCache documentation to JEP 514 #47274
🔨 Dependency Upgrades
- Downgrade to Cassandra Driver 4.19.0 #47926
- Upgrade to AspectJ 1.9.25 #48005
- Upgrade to Caffeine 3.2.3 #48006
- Upgrade to Cassandra Driver 4.19.2 #48183
- Upgrade to DB2 JDBC 12.1.3.0 #48083
- Upgrade to Hibernate 6.6.36.Final #48148
- Upgrade to Jackson Bom 2.19.4 #48008
- Upgrade to Jetty 12.0.30 #48118
- Upgrade to Jetty Reactive HTTPClient 4.0.13 #48149
- Upgrade to jOOQ 3.19.28 #48084
- Upgrade to Logback 1.5.21 #48085
- Upgrade to Micrometer 1.15.6 #48009
- Upgrade to Micrometer Tracing 1.5.6 #48010
- Upgrade to MySQL 9.5.0 #48011
- Upgrade to Neo4j Java Driver 5.28.10 #48044
- Upgrade to Quartz 2.5.1 #48012
- Upgrade to R2DBC Postgresql 1.0.9.RELEASE #48013
- Upgrade to Reactor Bom 2024.0.12 #48014
- Upgrade to Spring Data Bom 2025.0.6 #48039
- Upgrade to Spring Framework 6.2.14 #48166
- Upgrade to Spring Integration 6.5.4 #48040
- Upgrade to Spring Kafka 3.3.11 #48041
- Upgrade to Spring Pulsar 1.2.12 #48042
- Upgrade to Spring Security 6.5.7 #48043
- Upgrade to Tomcat 10.1.49 #48086
❤️ Contributors
Thank you to all the contributors who worked on this release:
@K-jun98, @TerryTaoYY, @hojooo, @linw-bai, @mipo256, @namest504, @ngocnhan-tran1996, @nosan, @scottfrederick, @siva-sai-udaygiri, @tschut, and @vpavic
v3.4.12
⚠️ Noteworthy changes
- This release contains a fix to get Testcontainers working with modern Docker versions. If this causes problems in your setup, you can downgrade the minimum Docker API, effectively reverting that change.
🐞 Bug Fixes
- Gradle war task does not exclude starter POMs from lib-provided #48195
- Testcontainers integration fails on Docker 29.0.0 #48104
- NullPointerException when using
@ConditionalOnSingleCandidatewith multiple manually registered singletons #48117 - Buildpack fails with recent Docker installs due to hardcoded version in URL #48050
- PortInUseException incorrectly thrown on failure to bind port due to Netty IP misconfiguration #47618
- Image building may fail when specifying a platform if an image has already been built with a different platform #47292
- Setting 'max-uri-tags' does not prevent unlimited meter growth on any AutoConfiguredCompositeMeterRegistry #47285
- WebSecurityCustomizer beans are excluded by WebMvcTest #47255
- Docker response 407 is not handled correctly resulting in no error message #47180
- Undertow's ServletContext is destroy too early, making it unusable in
@PreDestroymethods #47141 - New arm64 macbooks fail to bootBuildImage due to incorrect platform image #46665
- Auto-configured JCacheMetrics cannot be customized #46212
- Properties bound in the child management context ignore the parent's environment prefix #45858
📔 Documentation
- Fix typo in PortInUseException Javadoc #48124
- Document support for configuring servlet context init parameters using properties #47951
- BootstrapContext#getOrElseThrow has incorrect reference to IllegalStateException #47903
- Clarify when BootstrapContext get methods may return null rather than throwing an exception or calling the fallback supplier #47896
- Document how to use ContextPropagatingTaskDecorator for propagating trace context over thread boundaries #47893
- Limit Kotlin API documentation to Kotlin-specific APIs #47763
- Document that Actuator endpoint may have at most one extension of each type #47740
- Some spring.test.* properties are not documented #47236
- Document EndpointObjectMapper and management.endpoints.jackson.isolated-object-mapper #47039
- Clarify how warnings about soon-to-expire SSL certificates are reported #45564
- Correct section about required setters in "Type-safe Configuration Properties" #43138
🔨 Dependency Upgrades
- Upgrade to AspectJ 1.9.25 #48015
- Upgrade to Hibernate 6.6.36.Final #48146
- Upgrade to Jackson Bom 2.18.5 #48017
- Upgrade to Jetty 12.0.30 #48119
- Upgrade to Jetty Reactive HTTPClient 4.0.13 #48147
- Upgrade to jOOQ 3.19.28 #48078
- Upgrade to Logback 1.5.21 #48079
- Upgrade to Micrometer 1.14.13 #48018
- Upgrade to Micrometer Tracing 1.4.12 #48019
- Upgrade to MySQL 9.5.0 #48020
- Upgrade to Neo4j Java Driver 5.28.10 #48030
- Upgrade to R2DBC Postgresql 1.0.9.RELEASE #48021
- Upgrade to Reactor Bom 2024.0.12 #48022
- Upgrade to Spring Data Bom 2024.1.12 #48024
- Upgrade to Spring Framework 6.2.14 #48165
- Upgrade to Spring Integration 6.4.9 #48026
- Upgrade to Spring Kafka 3.3.11 #48027
- Upgrade to Spring Pulsar 1.2.12 #48028
- Upgrade to Spring Security 6.4.13 #48029
- Upgrade to Tomcat 10.1.49 #48080
❤️ Contributors
Thank you to all the contributors who worked on this release:
@K-jun98, @hojooo, @mipo256, @namest504, @ngocnhan-tran1996, @nosan, @siva-sai-udaygiri, and @tschut
v4.0.0-RC2
⭐ New Features
- Restore support for Jersey now that it supports JAX-RS 4 (Jakarta EE 11) #47967
- Refactor OpenTelemetryLoggingAutoConfiguration from OpenTelemetrySdkAutoConfiguration #47963
- Switch property backing OnEnabledTracingExportCondition to management.tracing.export.{name}.enabled #47959
- Rename management.zipkin.tracing to management.tracing.export.zipkin #47958
- Switch property backing OnEnabledLoggingExportCondition to management.logging.export.{name}.enabled #47957
- Rename management.opentelemetry.logging.export properties #47954
- Split spring-boot-micrometer-tracing into Brave and OpenTelemetry specific module #47953
- Use Elasticsearch 9.2's elasticsearch-rest5-client in spring-boot-elasticsearch #47945
- Provide auto-configuration for Jackson's XML data format #47942
- Rename OnlyOnceLoggingDenyMeterFilter #47925
- Allow url to be specified when working with
@AutoConfigureWebMvcconfigured HtmlUnit beans #47857
🐞 Bug Fixes
- Incorrect metadata for HttpServiceClientProperties ("spring.http.serviceclient") #47943
- Setting 'max-uri-tags' does not prevent unlimited meter growth on any AutoConfiguredCompositeMeterRegistry #47924
- Docker response 407 is not handled correctly resulting in no error message #47901
- Runtime hints for web resources no longer include nested folders #47894
- Auto-configuration for WebTestClient should be in an autoconfigure package #47892
- Jackson 2 support does not work in some sliced tests #47869
- spring-boot-starter-zipkin is missing spring-boot-micrometer-tracing dependency #47866
- Application TaskExecutor is no longer used when a custom AsyncConfigurer bean is defined #47897
- Custom Jackson serializers are no longer included in WebMvcTest and WebFluxTest #47864
- spring-boot-webtestclient is missing from GraphQL test starter #47849
- spring-boot-security brings test dependencies #47813
@JsonTestand@AutoConfigureJsonfail when using spring-boot-jackson2 #47811- Message converter customizer ordering impedes overriding #47798
- Deprecated testcontainers implementations are no longer detected #47796
- reactor-test is missing from reactive test starters #47795
- spring-kafka-test is missing from spring-boot-starter-kafka-test #47793
- spring-batch-test is missing from spring-boot-starter-batch-test #47792
- spring-rabbit-test is missing from spring-boot-starter-amqp-test #47791
- App fails to start when using Actuator with Jackson 2 and without spring-web #47788
- Depending on spring-boot-starter-actuator without a tracing bridge results in empty and unwanted correlation IDs in the logs #47785
- spring-boot-maven-plugin process-aot goal does not find package-private main method #47783
- Templating auto-configurations still have enabled properties that are not relevant following modularization #32250
📔 Documentation
- Config property management.logging.export.enabled is missing from documentation #47961
- Add a section about upgrading to Spring Boot 4.x #47916
- BootstrapContext#getOrElseThrow has incorrect reference to IllegalStateException #47906
- Clarify when BootstrapContext get methods may return null rather than throwing an exception or calling the fallback supplier #47899
- Document that web clients are opt-in with
@SpringBootTest#47891 - Document AssertJ support in RestTestClient #47881
- Document that Actuator endpoint may have at most one extension of each type #47874
- Limit Kotlin API documentation to Kotlin-specific APIs #47860
- Correct link to JacksonTester in JacksonTesterTestAutoConfiguration javadoc #47784
🔨 Dependency Upgrades
- Downgrade to Cassandra Driver 4.19.0 #47938
- Upgrade to AspectJ 1.9.25 #47931
- Upgrade to Caffeine 3.2.3 #47884
- Upgrade to Elasticsearch Client 9.2.0 #47847
- Upgrade to GraphQL Java 25.0.beta-9 #47911
- Upgrade to Hibernate 7.1.6.Final #47932
- Upgrade to Jackson 2 Bom 2.20.1 #47886
- Upgrade to JUnit Jupiter 6.0.1 #47933
- Upgrade to Kotlin 2.2.21 #47887
- Upgrade to Prometheus Client 1.4.2 #47888
- Upgrade to Quartz 2.5.1 #47889
- Upgrade to R2DBC Postgresql 1.1.1.RELEASE #47890
- Upgrade to Rabbit AMQP Client 5.27.1 #47950
- Upgrade to Spring Batch 6.0.0-RC2 #47842
- Upgrade to Spring Data Bom 2025.1.0-RC2 #47843
- Upgrade to Spring Framework 7.0.0-RC3 #47850
- Upgrade to Spring GraphQL 2.0.0-RC2 #47879
- Upgrade to Spring HATEOAS 3.0.0-RC2 #47851
- Upgrade to Spring Integration 7.0.0-RC2 #47880
- Upgrade to Spring Security 7.0.0-RC3 #47844
❤️ Contributors
Thank you to all the contributors who worked on this release:
@Walti91, @filiphr, @mipo256, @namest504, @ngocnhan-tran1996, @siva-sai-udaygiri, and @tschut
v4.0.0-RC1
⭐ New Features
- Revisit metrics and tracing test properties #47776
- Downgrade to GraphQL Java 24.3 #47752
- Configure devtools to set trace probability to 100% by default #47721
- Remove "public" from referenced configurations from auto-configurations #47715
- Remove support for Spring Pulsar Reactive #47707
- Add Jackson 2 module to ease upgrade effort #47688
- Remove ConcurrentReferenceCachingMetadataReaderFactory #47687
- Remove integration for REST Docs' REST Assured support until REST Assured supports Groovy 5 #47685
- Remove support for embedded jar launch scripts #47666
- Remove support for Spring Session Data MongoDB #47662
- Remove support for Spring Session Hazelcast #47661
- Drop Spock until it supports Groovy 5 #47650
- Provide auto-configuration for Jackson's CBOR data format #47641
- Add support for
@ObservationKeyValue#47637 - Rename Jackson-specific Json… annotations and classes to Jackson… #47625
- Use Neo4j Java Driver BOM #47623
- Add TWENTY_FIVE to JavaVersion enum #47616
- Rationalize endpoint packages #47606
- Refactor spring-boot-cloudfoundry package structure #47605
- Rename spring-boot-tx module to spring-boot-transaction #47603
- Use JsonMapper instead of ObjectMapper where feasible #47503
- Automatically detect Jackson 3 modules #47485
- Add AWS ECS to cloud platforms #47482
- Rename SharedObjectMapper to SharedJsonMapper #47471
- Provide a configuration property to auto-configure Jackson 3 for best compatibility with Spring Boot 3's Jackson 2 defaults #47470
- Raise GraalVM baseline to 25 #47433
- Clarify that spring-boot-rsocket does not require spring-web #47409
- Rationalize HTTP client configuration properties #47398
- Disable LiveReload server by default #47387
- Update Neo4j support to require Neo4j Java Driver 6.0.0 #47381
- Remove SQL and Reactor starters as they are only used transitively #47378
- Rationalize SSL bundle configuration in RedisConnectionDetails #47375
- Add support for RestTestClient #47335
- Rename Spring Session properties that depend on Spring Data #47333
- Rename JsonMapper-specific properties to make it clear that they're JSON-specific #47328
- Move spring.jackson.datetime.
<feature-name>to spring.jackson.datatype.datetime #47327 - Modularize spring-boot-test-autoconfigure #47322
- Allow jars to be marked as a development-tool to exclude from uber-jar #47320
- Switch Maven plugin to exclude optional dependencies by default #47318
- Provide a configuration property for enabling and disabling Elasticsearch Client's sniffer #47301
- Add
@ControllerAdvicesupport to RSocket messaging auto-configuration #47287 - Reintroduce previous EnvironmentPostProcessor in deprecated form #47272
- Remove Bitnami support #47267
- Improve how Spring AMQP's retry can be configured #47264
- Refine JSpecify annotations #47263
- Add support for configuring HttpClientTransport in JettyClientHttpConnectorBuilder #47251
- Raise the minimum supported version of the CycloneDX Gradle Plugin to 3.0.0 #47250
- Make all type exclude filters package-private #47227
- Rename …DataAutoConfiguration to Data…AutoConfiguration #47049
- Configure Lettuce with MicrometerTracing instead of MicrometerCommandLatencyRecorder when micrometer-tracing is available #46975
- Add support for static master-replica with Lettuce #46957
- Review and refine where possible war deployments following 4.0's modularisation #46944
- Remove unused SHA-1 hash from UNPACK markers #46520
- Adopt Framework's HttpMessageConverters #46411
- Add native image support for Log4J integration #46410
- Modularize spring-boot-test #46356
- Add support for in-memory Batch infrastructure #46307
- Package mappings and exchanges classes consistently #46217
- Introduce a shared abstraction for database initialization #46213
- Add FONTS location to StaticResourceLocation #46208
- Update Log4j's configuration using reconfigure rather than start #46035
- Drop spring-boot-loader-classic support #45714
- Allow DevTools property defaults to be contributed by modules #44792
🐞 Bug Fixes
- Signed jar verification fails when nested in an uber war running on an Oracle JVM #47772
- In an uber war, value of the Sbom-Location manifest attribute does not match the SBOM's actual location #47739
- Homebrew formula for the CLI should use libexec #47723
- When virtual threads are enabled, embedded Jetty does not use recommended virtual thread configuration #47718
- Dependency management for Hibernate is inconsistent #47698
- ClientHttpRequestFactoryRuntimeHints is missing timeout methods with Duration overloads #47679
@AutoConfigureHttpGraphQlTestershould not trigger the configuration of mockMvc #47660- The 'spring.mongodb.representation.uuid' property cannot be bound #47654
- OnBeanCondition no longer correctly finds annotations on scoped target proxy beans #47636
- JavaVersion doesn't work reliably in native-image #47621
- Using CodecCustomizer requires explicit dependency on spring-boot-http-codec #47397
- Auto-configured JsonMapper backs off when any type of ObjectMapper is defined #47379
- LiquibaseEndpoint always uses defaultSchema instead of liquibaseSchema #47347
- Maven plugin does not provide an easy way to exclude opti...
v3.5.7
⭐ New Features
- Add TWENTY_FIVE to JavaVersion enum #47609
🐞 Bug Fixes
- Signed jar verification fails when nested in an uber war running on an Oracle JVM #47771
- In an uber war, value of the Sbom-Location manifest attribute does not match the SBOM's actual location #47737
- Homebrew formula for the CLI should use libexec #47722
- When virtual threads are enabled, embedded Jetty does not use recommended virtual thread configuration #47717
- ClientHttpRequestFactoryRuntimeHints is missing timeout methods with Duration overloads #47678
- OnBeanCondition no longer correctly finds annotations on scoped target proxy beans #47635
- JavaVersion doesn't work reliably in native-image #47620
- LiquibaseEndpoint always uses defaultSchema instead of liquibaseSchema #47346
- Launcher fails to find main method when it is parameterless #47311
- Package private Main class using Java 25 is not found by build plugins #47309
- Bitnami legacy images are not automatically detected #47275
- Maven plugin does not provide an easy way to exclude optional dependencies from uber jar #25403
📔 Documentation
- Some spring.test.* properties are not documented #47775
- Dependency management for Maven AntRun Plugin is missing changelog link #47744
- Developing Your First Spring Boot Application has outdated tools #47700
- Include deprecated configuration properties in the reference documentation #47669
- Aggregated Javadoc should link to the proper version of JakartaEE #47593
- Update javadoc of TestRestTemplate following change to redirect behavior #47474
- Use non-deprecated syntax to configure sourceCompatibility #47343
- Fix link to Framework's
@Beanannotation #47330 - Update managed dependency version override examples in documentation #47306
🔨 Dependency Upgrades
- Upgrade to ActiveMQ 6.1.8 #47767
- Upgrade to Angus Mail 2.0.5 #47525
- Upgrade to AssertJ 3.27.6 #47526
- Upgrade to Byte Buddy 1.17.8 #47527
- Upgrade to Cassandra Driver 4.19.1 #47768
- Upgrade to Classmate 1.7.1 #47528
- Upgrade to Elasticsearch Client 8.18.8 #47671
- Upgrade to Glassfish JAXB 4.0.6 #47529
- Upgrade to GraphQL Java 24.3 #47755
- Upgrade to Groovy 4.0.29 #47713
- Upgrade to Hibernate 6.6.33.Final #47530
- Upgrade to HttpClient5 5.5.1 #47531
- Upgrade to HttpCore5 5.3.6 #47532
- Upgrade to Jakarta Mail 2.1.5 #47533
- Upgrade to Jakarta XML Bind 4.0.4 #47242
- Upgrade to Jetty 12.0.29 #47728
- Upgrade to Jetty Reactive HTTPClient 4.0.12 #47534
- Upgrade to jOOQ 3.19.27 #47536
- Upgrade to Logback 1.5.20 #47714
- Upgrade to Lombok 1.18.42 #47538
- Upgrade to Maven Compiler Plugin 3.14.1 #47539
- Upgrade to Micrometer 1.15.5 #47457
- Upgrade to Micrometer Tracing 1.5.5 #47458
- Upgrade to MongoDB 5.5.2 #47648
- Upgrade to MSSQL JDBC 12.10.2.jre11 #47612
- Upgrade to Netty 4.1.128.Final #47649
- Upgrade to Postgresql 42.7.8 #47540
- Upgrade to Pulsar 4.0.7 #47541
- Upgrade to R2DBC H2 1.0.1.RELEASE #47729
- Upgrade to R2DBC Postgresql 1.0.8.RELEASE #47542
- Upgrade to Reactor Bom 2024.0.11 #47459
- Upgrade to RxJava3 3.1.12 #47543
- Upgrade to Spring AMQP 3.2.8 #47614
- Upgrade to Spring Authorization Server 1.5.3 #47460
- Upgrade to Spring Batch 5.2.4 #47487
- Upgrade to Spring Data Bom 2025.0.5 #47461
- Upgrade to Spring Framework 6.2.12 #47462
- Upgrade to Spring GraphQL 1.4.3 #47754
- Upgrade to Spring Integration 6.5.3 #47615
- Upgrade to Spring LDAP 3.3.4 #47463
- Upgrade to Spring Pulsar 1.2.11 #47464
- Upgrade to Spring Security 6.5.6 #47465
- Upgrade to Spring Session 3.5.3 #47466
- Upgrade to Spring WS 4.1.2 #47467
- Upgrade to Tomcat 10.1.48 #47613
- Upgrade to Undertow 2.3.20.Final #47545
- Upgrade to WebJars Locator Lite 1.1.2 #47546
❤️ Contributors
Thank you to all the contributors who worked on this release:
@DKARAGODIN, @JinhyeokFang, @Lublanski, @Pankraz76, @fhiyo, @ngocnhan-tran1996, @nosan, @scottfrederick, and @xyraclius
v3.4.11
🐞 Bug Fixes
- In an uber war, value of the Sbom-Location manifest attribute does not match the SBOM's actual location #47735
- Homebrew formula for the CLI should use libexec #47696
- When virtual threads are enabled, embedded Jetty does not use recommended virtual thread configuration #47690
- ClientHttpRequestFactoryRuntimeHints is missing timeout methods with Duration overloads #47675
- OnBeanCondition no longer correctly finds annotations on scoped target proxy beans #47633
- JavaVersion doesn't work reliably in native-image #47619
- In an uber war, value of the Sbom-Location manifest attribute does not match the SBOM's actual location #47408
- LiquibaseEndpoint always uses defaultSchema instead of liquibaseSchema #47300
- Signed jar verification fails when nested in an uber war running on an Oracle JVM #47284
- Bitnami legacy images are not automatically detected #46983
📔 Documentation
- Dependency management for Maven AntRun Plugin is missing changelog link #47732
- Developing Your First Spring Boot Application has outdated tools #47699
- Include deprecated configuration properties in the reference documentation #47622
- Aggregated Javadoc should link to the proper version of JakartaEE #47592
- Use non-deprecated syntax to configure sourceCompatibility #47339
- Fix link to Framework's
@Beanannotation #47329 - Update managed dependency version override examples in documentation #47304
🔨 Dependency Upgrades
- Upgrade to ActiveMQ 6.1.8 #47766
- Upgrade to Angus Mail 2.0.5 #47506
- Upgrade to Classmate 1.7.1 #47507
- Upgrade to Glassfish JAXB 4.0.6 #47508
- Upgrade to Groovy 4.0.29 #47711
- Upgrade to Hibernate 6.6.33.Final #47509
- Upgrade to HttpCore5 5.3.6 #47510
- Upgrade to Jakarta Mail 2.1.5 #47511
- Upgrade to Jakarta XML Bind 4.0.4 #47237
- Upgrade to Jaybird 5.0.10.java11 #47513
- Upgrade to Jetty 12.0.29 #47726
- Upgrade to Jetty Reactive HTTPClient 4.0.12 #47514
- Upgrade to jOOQ 3.19.27 #47516
- Upgrade to Logback 1.5.20 #47712
- Upgrade to Lombok 1.18.42 #47518
- Upgrade to Micrometer 1.14.12 #47446
- Upgrade to Micrometer Tracing 1.4.11 #47447
- Upgrade to MSSQL JDBC 12.8.2.jre11 #47607
- Upgrade to Netty 4.1.128.Final #47647
- Upgrade to Postgresql 42.7.8 #47519
- Upgrade to Pulsar 3.3.9 #47520
- Upgrade to R2DBC H2 1.0.1.RELEASE #47727
- Upgrade to R2DBC Postgresql 1.0.8.RELEASE #47521
- Upgrade to Reactor Bom 2024.0.11 #47448
- Upgrade to RxJava3 3.1.12 #47522
- Upgrade to Spring AMQP 3.2.8 #47610
- Upgrade to Spring Authorization Server 1.4.6 #47449
- Upgrade to Spring Batch 5.2.4 #47486
- Upgrade to Spring Data Bom 2024.1.11 #47450
- Upgrade to Spring Framework 6.2.12 #47451
- Upgrade to Spring Integration 6.4.8 #47611
- Upgrade to Spring LDAP 3.2.15 #47452
- Upgrade to Spring Pulsar 1.2.11 #47453
- Upgrade to Spring Security 6.4.12 #47454
- Upgrade to Spring Session 3.4.6 #47455
- Upgrade to Spring WS 4.0.16 #47456
- Upgrade to Tomcat 10.1.48 #47608
- Upgrade to Undertow 2.3.20.Final #47524
❤️ Contributors
Thank you to all the contributors who worked on this release:
@DKARAGODIN, @Lublanski, @fhiyo, @ngocnhan-tran1996, @nosan, @scottfrederick, and @xyraclius
v4.0.0-M3
⭐ New Features
- Deprecate JUnit 4 integration #47256
- Add support for SimpleTaskExecutor#cancel-remaining-tasks-on-close #47244
- Restructure foundational packages to remove dependency on 'org.springframework.boot' #47232
- Add configuration property for Tomcat's static resource cache max size #47229
- Introduce specialized interfaces in PropertiesConfigAdapter #47226
- Make ConfigDataLocation.of non-nullable #47221
- Make SanitizableData.key non-nullable #47220
- Add methods to connector and request factory builds to apply pre-packaged customizations #47205
- Finalize and document Spring Boot's HTTP Service client support #47179
- Revisit Kotlin Serialization integration #47178
- Remove explicit dependency management for Spring Authorization Server as it is now part of Spring Security #47174
- Adapt RetryTopicConfiguration now that Spring Kafka no longer relies on Spring Retry #47125
- Remove auto-configuration support for '
@HttpServiceClient' #47123 - Adapt RabbitRetryTemplateCustomizer now that Spring AMQP no longer relies on Spring Retry #47122
- Rename spring.mongodb.uuid-representation #47052
- Remove Spring Data MongoDB dependency from MongoDB health support #47051
- Always use mongodb rather than mongo in MongoDB-related configuration properties #47050
- Remove GridFs from MongoConnectionDetails #47044
- Rename *DataProperties classes to Data*Properties #47043
- Add a configuration property for configuring Spring Data MongoDB's BigDecimal representation #47041
- Rename ConditionalOnEnabledTracing to ConditionalOnEnabledTracingExport #47029
- Update PropertyMapper to better support nullability #47024
- Drop support for Jersey, at least until it supports JAX-RS 4 (Jakarta EE 11) #47017
- Rename ScheduledTasksObservabilityAutoConfiguration to ScheduledTasksObservationAutoConfiguration #46995
- Refine JSpecify annotations #46926
- Introduce Kotlin Serialization auto-configuration #46546
- Exclude spring-boot-devtools from AOT processing in Maven #46533
- Improve Log4j Core configuration file detection for Log4j 3 #46409
- Remove dependency management for Spring Retry in favor of spring-core's new retry support #46309
- Optimize resource lookup in DevTools restart #46289
- Add support for authenticating with Elasticsearch using an API key #46167
- Remove isImmutable and getPrefix from OriginLookup #45547
- Update Jackson support to require Jackson 3 #45535
- Use a shaded version of org.json in spring-boot-configuration-metadata and spring-boot-cli #45504
- Replace
@OptionalParameterwith JSpecify's@Nullable#45390 - Create spring-boot-persistence module to house general persistence-related code and properties #45328
- Rename spring-boot-starter-aop to spring-boot-starter-aspectj #42948
- Rename MongoDB properties that do not require Spring Data MongoDB #34954
- Enable readiness and liveness probe endpoints by default #22825
🐞 Bug Fixes
- App fails to start when trying to use Prometheus without Actuator #47175
- Quoted -D arguments break system property resolution on Linux with Spring AOT #47167
- available() does not behave correctly when reading stored entries from a NestedJarFile #47058
- spring-boot-docker-compose doesn't create service connections when image has registry host but not project #47020
- Flyway Ignore Migration Patterns setting can't be set to an empty string #47014
📔 Documentation
- Default value of server.tomcat.resource.cache-ttl is not documented #47254
- Document Java 25 support #47248
- Fix links to Flyway reference documentation #46989
- Clarify Javadoc of Customizer interfaces about overriding behavior #46943
🔨 Dependency Upgrades
- Upgrade to Couchbase Client 3.9.1 #47129
- Upgrade to Ehcache3 3.11.1 #46893
- Upgrade to Elasticsearch Client 9.1.4 #47173
- Upgrade to Flyway 11.13.1 #47261
- Upgrade to Gson 2.13.2 #47153
- Upgrade to Hibernate 7.1.1.Final #47217
- Upgrade to HikariCP 7.0.2 #47060
- Upgrade to HtmlUnit 4.16.0 #47061
- Upgrade to HttpCore5 5.3.5 #47062
- Upgrade to Infinispan 15.2.6.Final #47063
- Upgrade to Jackson Bom 3.0.0-rc9 #47130
- Upgrade to Jakarta Activation 2.1.4 #47161
- Upgrade to Jakarta Mail 2.1.4 #47064
- Upgrade to Jaybird 6.0.3 #47065
- Upgrade to Jedis 6.2.0 #47045
- Upgrade to Jetty 12.1.1 #47131
- Upgrade to jOOQ 3.19.26 #47154
- Upgrade to Kafka 4.1.0 #47066
- Upgrade to Kotlin 2.2.10 #47067
- Upgrade to Lettuce 6.8.1.RELEASE #47046
- Upgrade to Lombok 1.18.40 #47068
- Upgrade to MariaDB 3.5.6 #47168
- Upgrade to Maven Failsafe Plugin 3.5.4 #47195
- Upgrade to Maven Shade Plugin 3.6.1 #47196
- Upgrade to Maven Surefire Plugin 3.5.4 #47197
- Upgrade to Micrometer 1.16.0-M3 #46996
- Upgrade to Micrometer Tracing 1.6.0-M3 #46997
- Upgrade to MongoDB 5.6.0 #47169
- Upgrade to Netty 4.2.6.Final #47132
- Upgrade to OpenTelemetry 1.54.0 #47133
- Upgrade to Pulsar 4.1.0 #47170
- Upgrade to R2DBC MSSQL 1.0.3.RELEASE #47171
- Upgrade to Reactor B...
v3.5.6
🐞 Bug Fixes
- Quoted -D arguments break system property resolution on Linux with Spring AOT #47166
- Groovy Templates fails with an NPE when rendering an auto new line #47139
- available() does not behave correctly when reading stored entries from a NestedJarFile #47057
- spring-boot-docker-compose doesn't create service connections when image has registry host but not project #47019
- Flyway Ignore Migration Patterns setting can't be set to an empty string #47013
📔 Documentation
- Default value of server.tomcat.resource.cache-ttl is not documented #47253
- Document Java 25 support #47245
- Fix links to Flyway reference documentation #46988
- Clarify Javadoc of Customizer interfaces about overriding behavior #46942
🔨 Dependency Upgrades
- Upgrade to Ehcache3 3.10.9 #47106
- Upgrade to Elasticsearch Client 8.18.6 #47094
- Upgrade to Gson 2.13.2 #47158
- Upgrade to Hibernate 6.6.29.Final #47216
- Upgrade to HikariCP 6.3.3 #47187
- Upgrade to HttpCore5 5.3.5 #47108
- Upgrade to Infinispan 15.2.6.Final #47109
- Upgrade to Jakarta Activation 2.1.4 #47188
- Upgrade to Jakarta Mail 2.1.4 #47110
- Upgrade to Jaybird 6.0.3 #47111
- Upgrade to Jetty 12.0.27 #47159
- Upgrade to jOOQ 3.19.26 #47160
- Upgrade to Lombok 1.18.40 #47113
- Upgrade to MariaDB 3.5.6 #47189
- Upgrade to Maven Failsafe Plugin 3.5.4 #47190
- Upgrade to Maven Shade Plugin 3.6.1 #47191
- Upgrade to Maven Surefire Plugin 3.5.4 #47192
- Upgrade to Micrometer 1.15.4 #47083
- Upgrade to Micrometer Tracing 1.5.4 #47084
- Upgrade to Netty 4.1.127.Final #47127
- Upgrade to R2DBC MSSQL 1.0.3.RELEASE #47193
- Upgrade to Reactor Bom 2024.0.10 #47085
- Upgrade to Spring AMQP 3.2.7 #47086
- Upgrade to Spring Batch 5.2.3 #47087
- Upgrade to Spring Data Bom 2025.0.4 #47088
- Upgrade to Spring Framework 6.2.11 #47089
- Upgrade to Spring GraphQL 1.4.2 #47090
- Upgrade to Spring Integration 6.5.2 #47091
- Upgrade to Spring Kafka 3.3.10 #47092
- Upgrade to Spring Pulsar 1.2.10 #47093
- Upgrade to Spring Security 6.5.5 #47257
- Upgrade to Tomcat 10.1.46 #47194
- Upgrade to Undertow 2.3.19.Final #47115
- Upgrade to XmlUnit2 2.10.4 #47243
❤️ Contributors
Thank you to all the contributors who worked on this release:
@Chanwon-Seo, @doljae, @izeye, and @quaff
v3.4.10
🐞 Bug Fixes
- available() does not behave correctly when reading stored entries from a NestedJarFile #47056
- Flyway Ignore Migration Patterns setting can't be set to an empty string #46984
- spring-boot-docker-compose doesn't create service connections when image has registry host but not project #46974
- Quoted -D arguments break system property resolution on Linux with Spring AOT #46555
📔 Documentation
- Default value of server.tomcat.resource.cache-ttl is not documented #47252
- Fix links to Flyway reference documentation #46976
- Clarify Javadoc of Customizer interfaces about overriding behavior #46938
🔨 Dependency Upgrades
- Upgrade to Ehcache3 3.10.9 #47096
- Upgrade to Hibernate 6.6.29.Final #47215
- Upgrade to HttpCore5 5.3.5 #47098
- Upgrade to Infinispan 15.0.21.Final #47099
- Upgrade to Jakarta Activation 2.1.4 #47181
- Upgrade to Jakarta Mail 2.1.4 #47100
- Upgrade to Jaybird 5.0.9.java11 #47101
- Upgrade to Jetty 12.0.27 #47156
- Upgrade to jOOQ 3.19.26 #47157
- Upgrade to Lombok 1.18.40 #47103
- Upgrade to Maven Failsafe Plugin 3.5.4 #47182
- Upgrade to Maven Shade Plugin 3.6.1 #47183
- Upgrade to Maven Surefire Plugin 3.5.4 #47184
- Upgrade to Micrometer 1.14.11 #47073
- Upgrade to Micrometer Tracing 1.4.10 #47074
- Upgrade to Netty 4.1.127.Final #47128
- Upgrade to R2DBC MSSQL 1.0.3.RELEASE #47185
- Upgrade to Reactor Bom 2024.0.10 #47075
- Upgrade to Spring AMQP 3.2.7 #47076
- Upgrade to Spring Batch 5.2.3 #47077
- Upgrade to Spring Data Bom 2024.1.10 #47078
- Upgrade to Spring Framework 6.2.11 #47079
- Upgrade to Spring Integration 6.4.7 #47080
- Upgrade to Spring Kafka 3.3.10 #47081
- Upgrade to Spring Pulsar 1.2.10 #47082
- Upgrade to Spring Security 6.4.11 #47258
- Upgrade to Tomcat 10.1.46 #47186
- Upgrade to Undertow 2.3.19.Final #47105
- Upgrade to XmlUnit2 2.10.4 #47238
❤️ Contributors
Thank you to all the contributors who worked on this release:
@Chanwon-Seo, @doljae, @izeye, and @quaff