Releases: spring-projects/spring-boot
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
v4.0.0-M2
⭐ New Features
- Rename metrics, observation, and tracing modules to include micrometer in their names and packages #46925
 - Drop support for Undertow as it is not Servlet 6.1 compatible #46917
 - Harmonize Logback's console and file logging charset #46846
 - Make spring-boot-starter-opentelemetry produce OTLP output from instrumentation #46842
 - Add '
@HttpServiceClient' scanning auto-configuration #46782 - Add dependency management for JSpecify #46776
 - Drop Actuator endpoint parameter support for javax.annotations.NonNull #46773
 - Remove StreamBuilderFactoryBeanCustomizer in favor of Spring Kafka's StreamsBuilderFactoryBeanConfigurer #46675
 - Rely on org.springframework.core.Nullness to determine if an Actuator endpoint is optional #46593
 - Provide configuration property to disable console logging #46592
 - Add JSpecify nullability annotations #46587
 - Add auto-configuration and properties support for Spring Framework's new API Versioning #46519
 - Ensure RestClient uses Virtual Thread Executor when spring.threads.virtual.enabled=true and JdkClientHttpRequestFactoryBuilder #46404
 - Create spring-boot-autoconfigure-classic module #46233
 - Auto-configure Elasticsearch's new Rest5Client rather than the legacy RestClient #46061
 - Raise the minimum supported version of Gradle to 8.14 #43574
 - Support Gradle 9 #43573
 - Make auto-configurations final and remove public members #32883
 
🐞 Bug Fixes
- HTTP Service Client properties are not applied #46915
 - Hazelcast health indicator reports the wrong status when Hazelcast has shut down due to an out-of-memory error #46910
 - Configuration Metadata for Actuator endpoints does not take Nullness into account #46854
 - Performance critical tracing code has high overhead due to the use of the Stream API #46845
 - Default authorization server filter chain configuration is excluded in M1 release when actuator starter is on the classpath #46841
 - SpringLiquibaseCustomizer is exposed outside its defined visibility scope #46759
 - Race condition in OutputCapture can result in stale data #46722
 - Auto-configured WebClient no longer uses context's ReactorResourceFactory #46684
 - WebTestClientAutoConfiguration fails when WebFlux is on the classpath and spring-boot-http-codec is not #46678
 - Default value not detected for a field annoted with 
@Name#46667 - Missing metadata when using 
@Namewith a constructor-bound property #46664 - Missing property for Spring Authorization Server's PAR endpoint #46648
 - Auto-configured MockMvc ignores 
@FilterRegistrationannotation #46647 - Property name is incorrect when reporting a mis-configured OAuth 2 Resource Server JWT public key location #46637
 - Memory not freed on context restart in JpaMetamodel#CACHE with spring.main.lazy-initialization=true #46635
 - Failure to discover default value for a primitive should not lead to document its default value #46562
 - WebTestClient is now bound to previous test server port when test application context is paused #46557
 - Spring Boot 4.0.0-M1 has a typo in spring-boot-dependencies.pom for spring-boot-starter-opentelemetry #46549
 - spring-boot-metrics with micrometer-registry-otlp throws exception if spring-boot-opentelemetry is missing #46303
 
📔 Documentation
- Update Servlet container system requirements #46918
 - Kotlin samples for configuration metadata are in the wrong package #46858
 - Observability examples in the reference guide are missing the Kotlin version #46799
 - Align method descriptions for SslOptions getCiphers and getEnabledProtocols with '
@returns' #46770 - Tracing samples in the reference guide are missing the Kotlin version #46768
 - Improve Virtual Threads section to mention the changes in Java 24 #46611
 - spring.test.webtestclient.timeout is not documented #46589
 - spring-boot-test-autoconfigure should use the configuration properties annotation processor like other modules #46586
 - spring.test.mockmvc properties are not documented #46579
 
🔨 Dependency Upgrades
- Upgrade to Angus Mail 2.0.4 #46735
 - Upgrade to AssertJ 3.27.4 #46736
 - Upgrade to Byte Buddy 1.17.7 #46887
 - Upgrade to Couchbase Client 3.9.0 #46797
 - Upgrade to Elasticsearch 9.1.0 #46686
 - Upgrade to Elasticsearch Client 9.1.1 #46827
 - Upgrade to Flyway 11.11.1 #46894
 - Upgrade to GraphQL Java 25.0.beta-5 #46880
 - Upgrade to Hibernate 7.1.0.Final #46738
 - Upgrade to HikariCP 7.0.1 #46739
 - Upgrade to HtmlUnit 4.15.0 #46895
 - Upgrade to Jackson Bom 2.20.0-rc1 #46815
 - Upgrade to Jedis 6.1.0 #46687
 - Upgrade to Jetty 12.1.0 #46906
 - Upgrade to Jetty Reactive HTTPClient 4.0.11 #46888
 - Upgrade to jOOQ 3.19.25 #46809
 - Upgrade to Json-smart 2.6.0 #46742
 - Upgrade to Lettuce 6.8.0.RELEASE #46750
 - Upgrade to MariaDB 3.5.5 #46810
 - Upgrade to Maven Javadoc Plugin 3.11.3 #46889
 - Upgrade to Micrometer 1.16.0-M2 #46811
 - Upgrade to Micrometer Tracing 1.6.0-M2 #46812
 - Upgrade to Mockito 5.19.0 #46896
 - Upgrade to MSSQL JDBC 13.2.0.jre11 #46897
 - Upgrade to MySQL 9.4.0 #46743
 - Upgrade to Native Build Tools Plugin 0.11.0 #46501
 - Upgrade to Netty 4.2.4.Final #46829
 - Upgrade to OpenTelemetry 1.53.0 #46813
 - Upgrade to Oracle Database 23.9.0.25.07 #46744
 - Upgrade to Prometheus Client 1.4.1 [#46898](https://github.com/spring-project...
 
v3.5.5
🐞 Bug Fixes
- Hazelcast health indicator reports the wrong status when Hazelcast has shut down due to an out-of-memory error #46909
 - Performance critical tracing code has high overhead due to the use of the Stream API #46844
 - SpringLiquibaseCustomizer is exposed outside its defined visibility scope #46758
 - Race condition in OutputCapture can result in stale data #46721
 - Auto-configured WebClient no longer uses context's ReactorResourceFactory #46673
 - Default value not detected for a field annoted with 
@Name#46666 - Missing metadata when using 
@Namewith a constructor-bound property #46663 - Missing property for Spring Authorization Server's PAR endpoint #46641
 - Property name is incorrect when reporting a mis-configured OAuth 2 Resource Server JWT public key location #46636
 - Memory not freed on context restart in JpaMetamodel#CACHE with spring.main.lazy-initialization=true #46634
 - Auto-configured MockMvc ignores 
@FilterRegistrationannotation #46605 - Failure to discover default value for a primitive should not lead to document its default value #46561
 
📔 Documentation
- Kotlin samples for configuration metadata are in the wrong package #46857
 - Observability examples in the reference guide are missing the Kotlin version #46798
 - Align method descriptions for SslOptions getCiphers and getEnabledProtocols with 
@returns#46769 - Tracing samples in the reference guide are missing the Kotlin version #46767
 - Improve Virtual Threads section to mention the changes in Java 24 #46610
 - spring.test.webtestclient.timeout is not documented #46588
 - spring-boot-test-autoconfigure should use the configuration properties annotation processor like other modules #46585
 - Adapt deprecation level for management.health.influxdb.enabled #46580
 - spring.test.mockmvc properties are not documented #46578
 
🔨 Dependency Upgrades
- Upgrade to Angus Mail 2.0.4 #46725
 - Upgrade to AssertJ 3.27.4 #46726
 - Upgrade to Byte Buddy 1.17.7 #46883
 - Upgrade to Couchbase Client 3.8.3 #46794
 - Upgrade to Elasticsearch Client 8.18.5 #46830
 - Upgrade to Hibernate 6.6.26.Final #46884
 - Upgrade to Hibernate Validator 8.0.3.Final #46728
 - Upgrade to HikariCP 6.3.2 #46729
 - Upgrade to Jersey 3.1.11 #46730
 - Upgrade to Jetty 12.0.25 #46831
 - Upgrade to Jetty Reactive HTTPClient 4.0.11 #46885
 - Upgrade to jOOQ 3.19.25 #46808
 - Upgrade to MariaDB 3.5.5 #46779
 - Upgrade to Maven Javadoc Plugin 3.11.3 #46886
 - Upgrade to Micrometer 1.15.3 #46701
 - Upgrade to Micrometer Tracing 1.5.3 #46702
 - Upgrade to MySQL 9.4.0 #46732
 - Upgrade to Netty 4.1.124.Final #46832
 - Upgrade to Pulsar 4.0.6 #46733
 - Upgrade to Reactor Bom 2024.0.9 #46703
 - Upgrade to REST Assured 5.5.6 #46849
 - Upgrade to Spring Authorization Server 1.5.2 #46704
 - Upgrade to Spring Data Bom 2025.0.3 #46705
 - Upgrade to Spring Framework 6.2.10 #46706
 - Upgrade to Spring Kafka 3.3.9 #46871
 - Upgrade to Spring LDAP 3.3.3 #46707
 - Upgrade to Spring Pulsar 1.2.9 #46708
 - Upgrade to Spring RESTDocs 3.0.5 #46920
 - Upgrade to Spring Security 6.5.3 #46709
 - Upgrade to Spring Session 3.5.2 #46710
 - Upgrade to Tomcat 10.1.44 #46734
 
❤️ Contributors
Thank you to all the contributors who worked on this release:
@Kguswo, @deejay1, @ganjisriver, @izeye, @jetflo, @ngocnhan-tran1996, @nicolasgarea, @nosan, @prishedko, @quaff, @schmidti159, @scordio, @shakuzen, @tommyk-gears, @zahra7, and @zakaria-shahen
v3.4.9
🐞 Bug Fixes
- Hazelcast health indicator reports the wrong status when Hazelcast has shut down due to an out-of-memory error #46877
 - Performance critical tracing code has high overhead due to the use of the Stream API #46838
 - SpringLiquibaseCustomizer is exposed outside its defined visibility scope #46752
 - Race condition in OutputCapture can result in stale data #46685
 - Default value not detected for a field annoted with 
@Name#46662 - Memory not freed on context restart in JpaMetamodel#CACHE with spring.main.lazy-initialization=true #46630
 - Property name is incorrect when reporting a mis-configured OAuth 2 Resource Server JWT public key location #46627
 - Missing metadata when using 
@Namewith a constructor-bound property #46599 - Failure to discover default value for a primitive should not lead to document its default value #46551
 
📔 Documentation
- Observability examples in the reference guide are missing the Kotlin version #46775
 - Kotlin samples for configuration metadata are in the wrong package #46774
 - Align method descriptions for SslOptions getCiphers and getEnabledProtocols with 
@returns#46756 - Tracing samples in the reference guide are missing the Kotlin version #46699
 - spring-boot-test-autoconfigure should use the configuration properties annotation processor like other modules #46584
 - spring.test.webtestclient.timeout is not documented #46577
 - spring.test.mockmvc properties are not documented #46576
 - Adapt deprecation level for management.health.influxdb.enabled #46574
 - Improve Virtual Threads section to mention the changes in Java 24 #46547
 
🔨 Dependency Upgrades
- Upgrade to Angus Mail 2.0.4 #46711
 - Upgrade to Hibernate 6.6.26.Final #46881
 - Upgrade to Hibernate Validator 8.0.3.Final #46713
 - Upgrade to Infinispan 15.0.19.Final #46847
 - Upgrade to Jersey 3.1.11 #46723
 - Upgrade to Jetty 12.0.25 #46833
 - Upgrade to Jetty Reactive HTTPClient 4.0.11 #46882
 - Upgrade to jOOQ 3.19.25 #46807
 - Upgrade to Micrometer 1.14.10 #46689
 - Upgrade to Micrometer Tracing 1.4.9 #46690
 - Upgrade to MySQL 9.4.0 #46715
 - Upgrade to Netty 4.1.124.Final #46834
 - Upgrade to Pulsar 3.3.8 #46716
 - Upgrade to Reactor Bom 2024.0.9 #46691
 - Upgrade to REST Assured 5.5.6 #46848
 - Upgrade to Spring Authorization Server 1.4.5 #46692
 - Upgrade to Spring Data Bom 2024.1.9 #46693
 - Upgrade to Spring Framework 6.2.10 #46694
 - Upgrade to Spring Kafka 3.3.9 #46870
 - Upgrade to Spring LDAP 3.2.14 #46695
 - Upgrade to Spring Pulsar 1.2.9 #46696
 - Upgrade to Spring RESTDocs 3.0.5 #46919
 - Upgrade to Spring Security 6.4.9 #46697
 - Upgrade to Spring Session 3.4.5 #46698
 - Upgrade to Tomcat 10.1.44 #46724
 
❤️ Contributors
Thank you to all the contributors who worked on this release:
@Kguswo, @Pankraz76, @deejay1, @ganjisriver, @izeye, @nicolasgarea, @nosan, @prishedko, @quaff, @schmidti159, @scordio, @shakuzen, @tommyk-gears, @zahra7, and @zakaria-shahen
v4.0.0-M1
⭐ New Features
- Move org.springframework.boot.autoconfigure.thread package to org.springframework.boot.thread #46406
 - Add support for JmsClient #46293
 - Rationalize starters following modularization #46245
 - Provide better exception message when configuration properties binding fails due to class not found error #46232
 - Migrate to Spring Batch 6 #46216
 - Align reactive auto-configuration names #46156
 - Create spring-boot-health module #46155
 - Create spring-boot-hibernate module #46154
 - Create spring-boot-tracing module #46153
 - Create spring-boot-cloudfoundry module #46152
 - Create spring-boot-servlet module #46151
 - Create spring-boot-observation module #46150
 - Create spring-boot-opentelemetry module #46149
 - Create sping-boot-zipkin module #46148
 - Create spring-boot-metrics module #46147
 - Create spring-boot-graphql-test module #46146
 - Create spring-boot-web-server module #46145
 - Create spring-boot-websocket module #46144
 - Create spring-boot-netty module #46143
 - Create spring-boot-reactor module #46142
 - Create spring-boot-graphql module #46141
 - Create spring-boot-sql module #46140
 - Create spring-boot-session modules #46139
 - Create spring-boot-webflux module #46138
 - Create spring-boot-security-saml2 module #46137
 - Create spring-boot-security-oauth2-authorization-server #46136
 - Create spring-boot-security-oauth2-resource-server module #46135
 - Create spring-boot-security-oauth2-client module #46134
 - Create spring-boot-security module #46133
 - Create spring-boot-cache module #46132
 - Create spring-boot-data-commons module #46131
 - Create spring-boot-data-rest module #46130
 - Create spring-boot-data-r2dbc module #46129
 - Create spring-boot-data-jdbc module #46128
 - Create spring-boot-data-couchbase module #46127
 - Create spring-boot-data-redis module #46126
 - Create spring-boot-webservices module #46125
 - Create spring-boot-data-neo4j module #46124
 - Create spring-boot-data-elasticsearch module #46123
 - Create spring-boot-data-cassandra module #46122
 - Create spring-boot-webmvc module #46121
 - Create spring-boot-http-converter module #46120
 - Create spring-boot-http-codec module #46119
 - Create spring-boot-http-client module #46118
 - Create spring-boot-hateoas module #46117
 - Create spring-boot-jersey module #46116
 - Create spring-boot-data-mongodb module #46115
 - Create spring-boot-mongodb module #46114
 - Create spring-boot-h2console module #46113
 - Create spring-boot-gson module #46112
 - Create spring-boot-sendgrid module #46111
 - Create spring-boot-thymeleaf module #46110
 - Create spring-boot-data-ldap module #46109
 - Create spring-boot-ldap module #46108
 - Create spring-boot-quartz module #46107
 - Create spring-boot-neo4j module #46106
 - Create spring-boot-mustache module #46105
 - Create spring-boot-cassandra module #46104
 - Create spring-boot-couchbase module #46103
 - Create spring-boot-jooq module #46101
 - Create spring-boot-batch module #46100
 - Create spring-boot-hazelcast module #46099
 - Create spring-boot-integration module #46098
 - Create spring-boot-rsocket module #46097
 - Create spring-boot-data-jpa module #46096
 - Create spring-boot-jpa module #46095
 - Create spring-boot-r2dbc module #46094
 - Create spring-boot-pulsar module #46093
 - Create spring-boot-kafka module #46092
 - Create spring-boot-elasticsearch module #46091
 - Create spring-boot-freemarker module #46090
 - Create spring-boot-groovy-templates module #46089
 - Create spring-boot-liquibase module #46088
 - Create spring-boot-validation module #46087
 - Create spring-boot-flyway module #46086
 - Create spring-boot-jdbc module #46085
 - Create spring-boot-tx module #46084
 - Create spring-boot-artemis module #46083
 - Create spring-boot-activemq module #46082
 - Create spring-boot-jms module #46081
 - Create spring-boot-jsonb module #46080
 - Create spring-boot-mail module #46079
 - Create spring-boot-jackson-module #46078
 - Create spring-boot-amqp module #46077
 - Create spring-boot-reactor-netty module #46076
 - Create spring-boot-jetty module #46075
 - Create spring-boot-undertow module #46074
 - Create spring-boot-tomcat module #46073
 - Publish milestones and release candidates to Maven Central #46024
 - Support 
@MeterTagon@Countedand@Timedmethods #46007 - Support pluggable types for EndpointObjectMapper [#45876](https://github.com/spring-projects/spring-b...