Releases: spring-projects/spring-boot
v4.1.0-M3
⚠️ Attention Required
- Provide advance warning of the deprecation and forthcoming removal of OpenTelemetry's ZipkinSpanExporter #49557
- Tomcat's default max part count is too low in 4.1 #49312
⭐ New Features
- Introduce Generic AMQP 1.0 client support #49621
- Rename spring-boot-amqp to spring-boot-rabbitmq #49620
- Add support for SslBundles to OTLP metrics export #49590
- Add support for SslBundles to OTLP traces export #49584
- Add support for SslBundles to OTLP logging export #49583
- Add more fine-grained support for selecting metric exemplars #49572
- Add property to disable the OpenTelemetry SDK #49564
- Add properties to select OpenTelemetry's sampler #49548
- Configure BootBuildInfo task created using the DSL as a src dir of the main source set's resources #49547
- Add properties to configure BatchLogRecordProcessor #49543
- Add type-safe binding support for gPRC service config #49540
- Add auto-configuration for OTLP exemplars #49538
- Output Docker Compose's logs when start or up fails #49423
- Provide protobuf gradle plugin support #49369
- Provide protobuf-maven-plugin configuration in the starter parent POM #49353
- Add FailureAnalyzedException to reduce the number of internal FailureAnalyzers required #49320
- Add more styling support to the Logback and Log4j2 color converters #49285
- Create reusable default TaskScheduler configuration #49280
- Update TestRestTemplate's default cookie handling to match RestTemplate's #49261
- Add Spring gRPC server and client observation support #49056
- Fail gRPC servlet applications if server.http2.enabled is not enabled #49050
- Add Spring gRPC Server Health Check Support #49048
- Add Spring gRPC server and client security support #49047
- Add Spring gRPC Testing Support #49046
- Add Spring gRPC Client Support #49045
- Add Spring gRPC Server Support #49044
- Add support for Spring gRPC #49043
- Add builder customizer for SpringOpaqueTokenIntrospector and SpringReactiveOpaqueTokenIntrospector #49029
- Deprecate LiveReload support for removal #48971
- Add SSL support to auto-configuration for RabbitMQ Streams #48960
- Allow empty objects to be loaded from YAML #48958
- Support binding of default properties when an empty property is defined #48920
- Auto-configure Jackson mapper beans with a bean-based HandlerInstantiator #48711
- Add support for auto-configuring ExpressionJwtGrantedAuthoritiesConverter #48490
- Deprecate RootUriTemplateHandler in favor of DefaultUriBuilderFactory #48350
- Add Log4j2 rolling policy configuration #47260
- Enable auto-configuration of OAuth2 resource server machinery in a non-webapp #43978
- Add support for Spring Batch MongoDB #43236
🐞 Bug Fixes
- EndpointRequest request matcher for health groups is too complex #49650
- "/cloudfoundryapplication" web path is not limited to Actuator #49647
- Fix EndpointRequest.toLinks() when base-path is '/' #49618
- Docker fails when a 'tcp://' address ends with a slash (for example 'tcp://docker:2375/') #49597
- RSocket exposes duplicate endpoint for websocket setups #49595
- Failure analysis for a missing mail sender is misleading #49585
- Dependency management for HttpClient5 misses httpclient5-observation #49553
- SpringBootContextLoader mentions class that no longer exists in message for classes or locations assertion #49536
- Missing starter for spring-boot-restdocs #49524
- Ordering of 'spring.config.import' is inconsistent when defined in environment or system properties #49483
- "spring.main.cloud-platform=none" does not disable cloud features #49480
- SSL support with Docker Compose does not work as documented #49386
- NoSuchMethodException when forcing the use of Log4J2LoggingSystem using org.springframework.boot.logging.LoggingSystem system property #49384
- ErrorPageRegistrarBeanPostProcessor is not auto-configured in war deployments and the ErrorPageCustomizer is not applied #49380
- Auto-configuration overrides authorization server configuration applied by Customizer beans #49379
- Using
@AutoConfigureWebTestClientprevents separate configuration of spring.test.webtestclient.timeout from taking effect #49345 - Several reactive starters do not depend on spring-boot-reactor #49335
- HTTP Service Interface Client doesn't work in a native image due to missing property binding #49326
- RouterFunctions descriptions in Actuator do not support nesting #49303
- Maven plugin does not set '-parameters' option when processing AOT code #49296
📔 Documentation
- Document support for Java 26 #49605
- List all supported colors when describing color-coded log output #49563
- Improve EndpointRequest matcher documentation #49521
- Clarify that running is the only supported input state when triggering a Quartz job through the Actuator endpoint #49515
- Document security considerations for forwarded headers in cloud deployments #49511
- Tutorial in the reference guide has outdated instructions #49430
- Document additional repositories required for shibboleth.net #49393
- Javadoc of JettyHttpClientBuilder refers to the wrong type #49388
- Example spring-devtools.properties file is shown in the wrong format #49363
- Clarify inferred relationships between OAuth 2 registrations and providers #49328
- Mention using org.springframework.boot.aot Gradle plugin directly for AOT processing with the JVM #49322
- Remove superfluous semi-colon from read timeout configuration example for HTTP service interface clients [#49313](https://github.com...
v4.0.4
⚠️ Attention Required
- Provide advance warning of the deprecation and forthcoming removal of OpenTelemetry's ZipkinSpanExporter #49453
- Upgrade to Jackson 2 Bom 2.21.1 #49389
- Upgrade to Jackson Bom 3.1.0 #49383
- Tomcat's default max part count is too low in 4.0.x #49311
🐞 Bug Fixes
- EndpointRequest request matcher for health groups is too complex #49649
- "/cloudfoundryapplication" web path is not limited to Actuator #49646
- Fix EndpointRequest.toLinks() when base-path is '/' #49617
- Docker fails when a 'tcp://' address ends with a slash (for example 'tcp://docker:2375/') #49596
- RSocket exposes duplicate endpoint for websocket setups #49593
- Failure analysis for a missing mail sender is misleading #49582
- SpringBootContextLoader mentions class that no longer exists in message for classes or locations assertion #49535
- Ordering of 'spring.config.import' is inconsistent when defined in environment or system properties #49482
- "spring.main.cloud-platform=none" does not disable cloud features #49479
- SSL support with Docker Compose does not work as documented #49385
- Auto-configuration overrides authorization server configuration applied by Customizer beans #49367
- Using
@AutoConfigureWebTestClientprevents separate configuration of spring.test.webtestclient.timeout from taking effect #49344 - NoSuchMethodException when forcing the use of Log4J2LoggingSystem using org.springframework.boot.logging.LoggingSystem system property #49343
- RouterFunctions descriptions in Actuator do not support nesting #49302
- Maven plugin does not set '-parameters' option when processing AOT code #49295
- HTTP Service Interface Client doesn't work in a native image due to missing property binding #49274
- ErrorPageRegistrarBeanPostProcessor is not auto-configured in war deployments and the ErrorPageCustomizer is not applied #49176
- Missing starter for spring-boot-restdocs #48289
📔 Documentation
- Document support for Java 26 #49604
- List all supported colors when describing color-coded log output #49562
- Improve EndpointRequest matcher documentation #49520
- Clarify that running is the only supported input state when triggering a Quartz job through the Actuator endpoint #49514
- Document security considerations for forwarded headers in cloud deployments #49507
- Tutorial in the reference guide has outdated instructions #49429
- Document additional repositories required for shibboleth.net #49392
- Javadoc of JettyHttpClientBuilder refers to the wrong type #49387
- Example spring-devtools.properties file is shown in the wrong format #49362
- Clarify inferred relationships between OAuth 2 registrations and providers #49327
- Mention using org.springframework.boot.aot Gradle plugin directly for AOT processing with the JVM #49321
- Remove superfluous semi-colon from read timeout configuration example for HTTP service interface clients #49306
- Update CLI's INSTALL.txt to reflect Groovy no longer being bundled #49298
- JDK requirement for the CLI still refers to Java 8 #49293
- Java and Kotlin samples of an environment post processor are inconsistent #49287
🔨 Dependency Upgrades
- Upgrade to Commons Logging 1.3.6 #49545
- Upgrade to DB2 JDBC 12.1.4.0 #49546
- Upgrade to Elasticsearch Client 9.2.6 #49421
- Upgrade to Hibernate 7.2.7.Final #49608
- Upgrade to Jakarta XML WS 4.0.3 #49469
- Upgrade to JBoss Logging 3.6.3.Final #49632
- Upgrade to Jetty 12.1.7 #49470
- Upgrade to Kafka 4.1.2 #49627
- Upgrade to Liquibase 5.0.2 #49471
- Upgrade to Lombok 1.18.44 #49575
- Upgrade to Maven Failsafe Plugin 3.5.5 #49472
- Upgrade to Maven Shade Plugin 3.6.2 #49473
- Upgrade to Maven Surefire Plugin 3.5.5 #49474
- Upgrade to Micrometer 1.16.4 #49413
- Upgrade to Micrometer Tracing 1.6.4 #49414
- Upgrade to MongoDB 5.6.4 #49422
- Upgrade to Native Build Tools Plugin 0.11.5 #49475
- Upgrade to Neo4j Java Driver 6.0.3 #49431
- Upgrade to Pulsar 4.1.3 #49476
- Upgrade to Reactor Bom 2025.0.4 #49415
- Upgrade to Spring Batch 6.0.3 #49416
- Upgrade to Spring Data Bom 2025.1.4 #49417
- Upgrade to Spring Framework 7.0.6 #49418
- Upgrade to Spring HATEOAS 3.0.3 #49587
- Upgrade to Spring Integration 7.0.4 #49529
- Upgrade to Spring Kafka 4.0.4 #49419
- Upgrade to Spring Pulsar 2.0.4 #49420
- Upgrade to Spring Security 7.0.4 #49530
- Upgrade to Spring WS 5.0.1 #49531
- Upgrade to Testcontainers 2.0.4 #49655
❤️ Contributors
Thank you to all the contributors who worked on this release:
@FBibonne, @answndud, @bbbbooo, @chandanv89, @giyeon95, @itsmevichu, @jayychoi, @l2yujw, @ngocnhan-tran1996, @qnnn, @quaff, and @sbrannen
v3.5.12
🐞 Bug Fixes
- EndpointRequest request matcher for health groups is too complex #49648
- "/cloudfoundryapplication" web path is not limited to Actuator #49645
- RSocket exposes duplicate endpoint for websocket setups #49592
- Fix EndpointRequest.toLinks() when base-path is '/' #49591
- SpringBootContextLoader mentions class that no longer exists in message for classes or locations assertion #49518
- "spring.main.cloud-platform=none" does not disable cloud features #49478
- Using
@AutoConfigureWebTestClientprevents separate configuration of spring.test.webtestclient.timeout from taking effect #49340 - Ordering of 'spring.config.import' is inconsistent when defined in environment or system properties #49324
- RouterFunctions descriptions in Actuator do not support nesting #49289
- Maven plugin does not set '-parameters' option when processing AOT code #49268
- SSL support with Docker Compose does not work as documented #49210
- Docker fails when a 'tcp://' address ends with a slash (for example 'tcp://docker:2375/') #49055
📔 Documentation
- List all supported colors when describing color-coded log output #49561
- Clarify that running is the only supported input state when triggering a Quartz job through the Actuator endpoint #49506
- Tutorial in the reference guide has outdated instructions #49411
- Javadoc of JettyHttpClientBuilder refers to the wrong type #49364
- Example spring-devtools.properties file is shown in the wrong format #49357
- Mention using org.springframework.boot.aot Gradle plugin directly for AOT processing with the JVM #49307
- Update CLI's INSTALL.txt to reflect Groovy no longer being bundled #49297
- JDK requirement for the CLI still refers to Java 8 #49290
- Java and Kotlin samples of an environment post processor are inconsistent #49282
- Document additional repositories required for shibboleth.net #49260
- Clarify inferred relationships between OAuth 2 registrations and providers #49240
🔨 Dependency Upgrades
- Upgrade to DB2 JDBC 12.1.4.0 #49544
- Upgrade to Hibernate 6.6.44.Final #49457
- Upgrade to Jakarta XML WS 4.0.3 #49458
- Upgrade to JBoss Logging 3.6.3.Final #49630
- Upgrade to Jetty 12.0.33 #49459
- Upgrade to Kafka 3.9.2 #49460
- Upgrade to Lombok 1.18.44 #49574
- Upgrade to Maven Failsafe Plugin 3.5.5 #49461
- Upgrade to Maven Shade Plugin 3.6.2 #49462
- Upgrade to Maven Surefire Plugin 3.5.5 #49463
- Upgrade to Micrometer 1.15.10 #49403
- Upgrade to Micrometer Tracing 1.5.10 #49404
- Upgrade to Pulsar 4.0.9 #49464
- Upgrade to Reactor Bom 2024.0.16 #49405
- Upgrade to Spring Batch 5.2.5 #49406
- Upgrade to Spring Data Bom 2025.0.10 #49407
- Upgrade to Spring Framework 6.2.17 #49408
- Upgrade to Spring HATEOAS 2.5.2 #49586
- Upgrade to Spring Integration 6.5.8 #49631
- Upgrade to Spring Kafka 3.3.14 #49409
- Upgrade to Spring Pulsar 1.2.16 #49410
- Upgrade to Spring Security 6.5.9 #49527
- Upgrade to Spring WS 4.1.3 #49528
❤️ Contributors
Thank you to all the contributors who worked on this release:
@bbbbooo, @chandanv89, @itsmevichu, @jayychoi, @l2yujw, @ngocnhan-tran1996, @qnnn, @quaff, and @sbrannen
v4.1.0-M2
⭐ New Features
- Add support for publishMaxGaugeForHistograms in OtlpRegistry #49242
- Add TWENTY_SIX to JavaVersion enum #49194
- Support service connections with RabbitMQ Stream and Docker Compose #49162
- Bind 'Optional' value object parameters as empty rather than null #49152
- Add Kotlin DSL extension functions for TestEntityManager #49063
- Add customizers for OtlpHttpLogRecordExporterBuilder and OtlpGrpcLogRecordExporterBuilder #49002
- Improve performance of structure logging 'ContextPairs' nested name splitting #48999
- Show certificates from truststore in SSL info endpoint #48967
- Add time, locale, and work dir data to ProcessInfo #48959
- Add compression mode OTLP property #48957
- Provide support for adding to the mime types that are compressed #48930
- Support service connections with RabbitMQ Streams and Testcontainers #42443
- Provide configuration properties and customizers for configuring Jackson's factories #34709
- Provide a configuration option to load properties config data files as UTF-8 #28663
🐞 Bug Fixes
- Jackson properties may not be applied correctly to RestClients #49250
- Using the OTel and Zipkin starters together creates invalid configuration #49215
- ClassNotFoundException when using Actuator without spring-boot-health #49198
- Whitespace can be incorrectly removed when spring-boot-configuration-processor runs on multi-line javadoc #49061
- Slice test includes fail to load when using spring-boot-starter-test-classic #49042
- Java version requirement check for native image is confusing if AOT didn't run #49025
- Jackson2HttpMessageConvertersConfiguration uses ConditionOn Jackson3 XMLMapper class #49016
- TestPropertyValues.Pair.fromMapEntry(Entry<String, String>) does not comply with its nullability contract #48991
- server.jetty.threads.max is ignored when using virtual threads #48990
- Docker credential helpers with file extensions cannot be executed on Windows #48980
📔 Documentation
- Couchbase and Kafka are incorrectly listed as supporting SSL with Docker Compose #49213
- Document that use of non idiomatic format for '
@Value' still apply for environment variables #49110 - Document naming convention for custom test-scoped starters #49018
- Delay removal of Jackson 2 support until 4.3 at the earliest #49011
- LICENSE.txt and NOTICE.txt files have the wrong content in the latest releases #49004
- ApplicationContextAssert documents a non-existent assertion in getFailure() #48978
- Update the configuration metadata changelog to include properties whose default values have changed #48962
- Highlight the importance of the preStop hook when configuring Kubernetes probes #48947
🔨 Dependency Upgrades
- Upgrade to ActiveMQ 6.2.1 #49254
- Upgrade to Artemis 2.51.0 #49203
- Upgrade to AssertJ 3.27.7 #49124
- Upgrade to Byte Buddy 1.18.5 #49235
- Upgrade to Commons Codec 1.21.0 #49125
- Upgrade to Couchbase Client 3.11.1 #49252
- Upgrade to Elasticsearch Client 9.2.5 #49177
- Upgrade to Flyway 11.20.3 #49127
- Upgrade to Flyway 12.0.1 #49255
- Upgrade to Groovy 5.0.4 #49128
- Upgrade to Hibernate 7.2.4.Final #49180
- Upgrade to HttpCore5 5.4.1 #49181
- Upgrade to Jaybird 6.0.4 #49130
- Upgrade to JBoss Logging 3.6.2.Final #49131
- Upgrade to Jedis 7.2.1 #49227
- Upgrade to Jersey 4.0.2 #49132
- Upgrade to Jetty 12.1.6 #49133
- Upgrade to jOOQ 3.20.11 #49134
- Upgrade to JUnit Jupiter 6.0.3 #49236
- Upgrade to Kafka 4.2.0 #49258
- Upgrade to Kotlin 2.3.10 #49135
- Upgrade to Lettuce 7.2.1.RELEASE #49228
- Upgrade to Logback 1.5.32 #49248
- Upgrade to Maven Compiler Plugin 3.15.0 #49137
- Upgrade to Maven Dependency Plugin 3.10.0 #49172
- Upgrade to Micrometer 1.17.0-M2 #49173
- Upgrade to Micrometer Tracing 1.7.0-M3 #49174
- Upgrade to MongoDB 5.6.3 #49138
- Upgrade to MySQL 9.6.0 #49139
- Upgrade to Netty 4.2.10.Final #49140
- Upgrade to OpenTelemetry 1.58.0 #49141
- Upgrade to Oracle Database 23.26.1.0.0 #49142
- Upgrade to Postgresql 42.7.10 #49204
- Upgrade to Prometheus Client 1.5.0 #49256
- Upgrade to R2DBC MariaDB 1.4.0 #49257
- Upgrade to Rabbit Stream Client 1.5.0 #49182
- Upgrade to Reactor Bom 2025.0.3 #49113
- Upgrade to Spring AMQP 4.1.0-M2 #49114
- Upgrade to Spring Data 2026.0.0-M1 #49229
- Upgrade to Spring Framework 7.0.5 #49218
- Upgrade to Spring Integration 7.1.0-M2 #49117
- Upgrade to Spring Kafka 4.1.0-M1 #49118
- Upgrade to Spring LDAP 4.1.0-M1 #49119
- Upgrade to Spring Pulsar 2.0.3 #49120
- Upgrade to Spring Security 7.1.0-M2 #49121
- Upgrade to Spring Session 4.1.0-M1 #49145
- Upgrade to SQLite JDBC 3.51.2.0 #49175
- Upgrade to Tomcat 11.0.18 #49143
❤️ Contributors
Thank you to all the contributors who worked on this release:
@GaetanoCerciello, @aalsanie, @dj258255, @dsyer, @eddumelendez, @garvit-joshi, @jdsalasca, @joaquinjsb, @jonatan-ivanov, @junpakPark, @linkian209, @nosan, @osvetlik, @quaff, @scordio, @shakuzen, and @srt
v4.0.3
⭐ New Features
- Add TWENTY_SIX to JavaVersion enum #49193
🐞 Bug Fixes
- Jackson properties may not be applied correctly to RestClients #49223
- ClassNotFoundException when using Actuator without spring-boot-health #49196
- Using the OTel and Zipkin starters together creates invalid configuration #49183
- Whitespace can be incorrectly removed when spring-boot-configuration-processor runs on multi-line javadoc #49060
- Jackson2HttpMessageConvertersConfiguration uses ConditionOn Jackson3 XMLMapper class #49015
- server.jetty.threads.max is ignored when using virtual threads #48989
- Slice test includes fail to load when using spring-boot-starter-test-classic #48981
- Docker credential helpers with file extensions cannot be executed on Windows #48979
- Java version requirement check for native image is confusing if AOT didn't run #48963
- TestPropertyValues.Pair.fromMapEntry(Entry<String, String>) does not comply with its nullability contract #48948
📔 Documentation
- Couchbase and Kafka are incorrectly listed as supporting SSL with Docker Compose #49212
- Document that use of non idiomatic format for '
@Value' still apply for environment variables #49109 - Document naming convention for custom test-scoped starters #49017
- Delay removal of Jackson 2 support until 4.3 at the earliest #49010
- LICENSE.txt and NOTICE.txt files have the wrong content in the latest releases #49003
- ApplicationContextAssert documents a non-existent assertion in getFailure() #48977
- Highlight the importance of the preStop hook when configuring Kubernetes probes #48946
🔨 Dependency Upgrades
- Upgrade to AssertJ 3.27.7 #49095
- Upgrade to Elasticsearch Client 9.2.5 #49184
- Upgrade to Groovy 5.0.4 #49097
- Upgrade to Hibernate 7.2.3.Final #49098
- Upgrade to Hibernate 7.2.4.Final #49167
- Upgrade to Jaybird 6.0.4 #49099
- Upgrade to JBoss Logging 3.6.2.Final #49100
- Upgrade to Jersey 4.0.2 #49101
- Upgrade to Jetty 12.1.6 #49102
- Upgrade to jOOQ 3.19.30 #49103
- Upgrade to JUnit Jupiter 6.0.3 #49233
- Upgrade to Logback 1.5.29 #49169
- Upgrade to Logback 1.5.32 #49245
- Upgrade to Micrometer 1.16.3 #49111
- Upgrade to Micrometer Tracing 1.6.3 #49112
- Upgrade to MongoDB 5.6.3 #49105
- Upgrade to MySQL 9.6.0 #49106
- Upgrade to Netty 4.2.10.Final #49107
- Upgrade to Postgresql 42.7.10 #49202
- Upgrade to Reactor Bom 2025.0.3 #49087
- Upgrade to Spring Data Bom 2025.1.3 #49088
- Upgrade to Spring Framework 7.0.5 #49216
- Upgrade to Spring Integration 7.0.3 #49217
- Upgrade to Spring Kafka 4.0.3 #49090
- Upgrade to Spring LDAP 4.0.2 #49091
- Upgrade to Spring Pulsar 2.0.3 #49092
- Upgrade to Spring Security 7.0.3 #49093
- Upgrade to Spring Session 4.0.2 #49094
- Upgrade to Tomcat 11.0.18 #49108
❤️ Contributors
Thank you to all the contributors who worked on this release:
@GaetanoCerciello, @dsyer, @linkian209, @nosan, @quaff, @scordio, and @srt
v3.5.11
🐞 Bug Fixes
- Whitespace can be incorrectly removed when spring-boot-configuration-processor runs on multi-line javadoc #49039
- server.jetty.threads.max is ignored when using virtual threads #48982
- Docker credential helpers with file extensions cannot be executed on Windows #48965
📔 Documentation
- Couchbase and Kafka are incorrectly listed as supporting SSL with Docker Compose #49211
- Document that use of non idiomatic format for '
@Value' still apply for environment variables #49054 - Document naming convention for custom test-scoped starters #49014
- LICENSE.txt and NOTICE.txt files have the wrong content in the latest releases #48996
- ApplicationContextAssert documents a non-existent assertion in getFailure() #48973
- Highlight the importance of the preStop hook when configuring Kubernetes probes #48936
🔨 Dependency Upgrades
- Upgrade to AssertJ 3.27.7 #49075
- Upgrade to Groovy 4.0.30 #49076
- Upgrade to Hibernate 6.6.42.Final #49077
- Upgrade to Jaybird 6.0.4 #49078
- Upgrade to JBoss Logging 3.6.2.Final #49079
- Upgrade to Jetty 12.0.32 #49080
- Upgrade to jOOQ 3.19.30 #49081
- Upgrade to Logback 1.5.32 #49243
- Upgrade to Micrometer 1.15.9 #49064
- Upgrade to Micrometer Tracing 1.5.9 #49065
- Upgrade to MySQL 9.6.0 #49083
- Upgrade to Netty 4.1.131.Final #49165
- Upgrade to Postgresql 42.7.10 #49201
- Upgrade to Reactor Bom 2024.0.15 #49066
- Upgrade to Spring Authorization Server 1.5.6 #49067
- Upgrade to Spring Data Bom 2025.0.9 #49068
- Upgrade to Spring Framework 6.2.16 #49069
- Upgrade to Spring GraphQL 1.4.5 #49070
- Upgrade to Spring Integration 6.5.7 #49071
- Upgrade to Spring Kafka 3.3.13 #49244
- Upgrade to Spring LDAP 3.3.6 #49072
- Upgrade to Spring Pulsar 1.2.15 #49073
- Upgrade to Spring Security 6.5.8 #49225
- Upgrade to Spring Session 3.5.5 #49074
- Upgrade to Tomcat 10.1.52 #49084
- Upgrade to Undertow 2.3.23.Final #49166
❤️ Contributors
Thank you to all the contributors who worked on this release:
v4.1.0-M1
⚠️ Noteworthy Changes
- The dependency on
org.eclipse.jetty.ee11:jetty-ee11-servletshas been removed fromspring-boot-jettyas it was unnecessary and unused. If your application code depends on a class fromjetty-ee11-servlets, declare a dependency on it in your build configuration #48689
⭐ New Features
- Automatically configure Spring AMQP's observation convention beans #48922
- Automatically configure Spring Kafka's observation convention beans #48914
- Add spring.data.rest.return-body-on-delete configuration property #48872
- Provide configuration properties for Jackson read and write features that are common to multiple formats #48870
- Allow beans created in MockRestServiceServerAutoConfiguration to be replaced by user-provided alternatives #48825
- Introduce
@AutoConfigureWebServertest annotation to support@SpringBootTestwith specific classes and a random port #48815 - Support configuring bootBuildImage's environment through the command line #48792
- Upgrade to jOOQ 3.20 and require Java 21 to use it #48619
- WebServiceTemplateBuilder should prevent the default MessageFactory to be created #48615
- Remove support for the deprecated layertools jar mode #48568
- Deprecate Derby support since Apache Derby is retired #48567
- Reinstate support for Spock now that it supports Groovy 5 #48513
- Remove support for deprecated Logback properties #48489
- Use Charset instead of String for Mustache template encoding #48347
- Support SSL (LDAPS) with embedded LDAP server #48315
- Add property to automatically register a ContextPropagatingTaskDecorator bean #48033
- Autoconfigure JVM and system metrics with available conventions #47935
- Allow EntityManagerFactoryBuilder to also add PersistenceUnitPostProcessor instances #47802
- Perform failure analysis when Testcontainers cannot find a valid Docker environment #47797
- Add support for configuring SimpleMessageListenerContainer #47716
- Decorate all Assert implementations with
@CheckReturnValue#46766 - Delete web servers' temporary directories when the context is closed #9983
🐞 Bug Fixes
- No TransactionAutoConfiguration with spring-boot-starter-kafka for Spring Boot 4 #48898
- SessionAutoConfiguration creates a DefaultCookieSerializer with a default SameSite of null instead of Lax #48861
- Message interpolation by MVC and WebFlux's Validators does not work correctly in a native image #48844
- RestTestClientAutoConfiguration and TestRestTemplateAutoConfiguration should be package-private #48843
- Setting graphql schema location to "classpath*:graphql/**/" causes failure due to incorrectly packaged test resource #48842
- Evaluation of bean conditions unnecessarily queries the bean factory for types that are not present #48841
- When a bean condition references a type that is not present, it appears as ? in the condition evaluation report #48839
- CloudFoundry integration fails in Servlet-based web app without a dependency on spring-boot-starter-restclient #48827
- SSL metrics are no longer auto-configured #48824
- Actuator /info endpoint fails in Java 25 Native Image (VirtualThreadSchedulerMXBean support) #48813
- DataSourceBuilder cannot create oracle.ucp.jdbc.PoolDataSourceImpl in a native image #48704
- HttpServiceClientProperties incorrectly uses the
@ConfigurationPropertiesannotation on a LinkedHashMap class #48696 - The spring-boot-cloudfoundry module should only have an optional dependency on spring-boot-security #48687
- Application JAR created by extract command is not reproductible #48679
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) is no longer applied to the management server #48654- Fix zero-length byte buffer in InspectedContent #48651
- Micrometer test modules should have an api dependency on micrometer-observation-test #48626
- spring-boot-micrometer-tracing-opentelemetry fails if spring-boot-opentelemetry isn't there #48586
- App fails to start with starter-webmvc and starter-zipkin #48584
- AOT processing of tests should not be disabled when 'skipTests' is set #46929
- Hard-coded uses of src/main/webapp preclude any other project layouts from working #23829
📔 Documentation
- Fix typo in REST client documentation #48919
- Remove duplicate word #48877
- Document support for configuring arguments passed to Docker Compose #48807
- The documentation related to EnvironmentPostProcessor links to deprecated interface #48805
- Document spring-boot-starter-cloudfoundry on Cloud Foundry Support Page #48797
- Correct docs to use new location for error handling configuration properties #48771
- Update documentation for Buildpack's AOT Cache support #48770
- Clarify javadoc to make it clear that HazelcastConfigCustomizer beans are only applied if Hazelcast is configured via a config file #48660
- Example using excludeDevtools property should document that optional dependencies should be enabled #48644
- Fix grammar and typos in the reference guide #48602
- Update Tracing section for Spring Boot 4's modularity #48582
🔨 Dependency Upgrades
- Upgrade to ActiveMQ 6.2.0 #48732
- Upgrade to Artemis 2.44.0 #48733
- Upgrade to Byte Buddy 1.18.4 #48891
- Upgrade to Classmate 1.7.3 #48849
- Upgrade to Commons Codec 1.20.0 #48735
- Upgrade to Commons DBCP2 2.14.0 #48736
- Upgrade to Commons Lang3 3.20.0 #48737
- Upgrade to Commons Pool2 2.13.1 #48738
- Upgrade to Elasticsearch Client 9.2.3 #48731
- Upgrade to Flyway 11.20.2 #48850
- Upgrade to Hibernate 7.2.1.Final #48845
- Upgrade to Hibernate Validator 9.1.0.Final #48741
- Upgrade to HtmlUnit 4.21.0 #48742
- Upgrade to HttpClient5 ...
v4.0.2
⚠️ Noteworthy Changes
- The dependency on
org.eclipse.jetty.ee11:jetty-ee11-servletshas been removed fromspring-boot-jettyas it was unnecessary and unused. If your application code depends on a class fromjetty-ee11-servlets, declare a dependency on it in your build configuration. #48677
🐞 Bug Fixes
- No TransactionAutoConfiguration with spring-boot-starter-kafka for Spring Boot 4 #48880
- Evaluation of bean conditions unnecessarily queries the bean factory for types that are not present #48840
- When a bean condition references a type that is not present, it appears as ? in the condition evaluation report #48838
- SessionAutoConfiguration creates a DefaultCookieSerializer with a default SameSite of null instead of Lax #48830
- Setting graphql schema location to "classpath*:graphql/**/" causes failure due to incorrectly packaged test resource #48829
- Message interpolation by MVC and WebFlux's Validators does not work correctly in a native image #48828
- CloudFoundry integration fails in Servlet-based web app without a dependency on spring-boot-starter-restclient #48826
- RestTestClientAutoConfiguration and TestRestTemplateAutoConfiguration should be package-private #48820
- SSL metrics are no longer auto-configured #48819
- Actuator /info endpoint fails in Java 25 Native Image (VirtualThreadSchedulerMXBean support) #48812
- DataSourceBuilder cannot create oracle.ucp.jdbc.PoolDataSourceImpl in a native image #48703
- The spring-boot-cloudfoundry module should only have an optional dependency on spring-boot-security #48685
- Application JAR created by extract command is not reproductible #48678
- AOT processing of tests should not be disabled when 'skipTests' is set #48662
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) is no longer applied to the management server #48653- Fix zero-length byte buffer in InspectedContent #48650
- Can no longer override JacksonJsonHttpMessageConverter with ServerHttpMessageConvertersCustomizer #48635
- HttpServiceClientProperties incorrectly uses the
@ConfigurationPropertiesannotation on a LinkedHashMap class #48616 - spring-boot-micrometer-tracing-opentelemetry fails if spring-boot-opentelemetry isn't there #48585
- App fails to start with starter-webmvc and starter-zipkin #48581
- Micrometer test modules should have an api dependency on micrometer-observation-test #48386
📔 Documentation
- Fix typo in REST client documentation #48907
- Remove duplicate word #48874
- Document support for configuring arguments passed to Docker Compose #48806
- The documentation related to EnvironmentPostProcessor links to deprecated interface #48803
- Update documentation for Buildpack's AOT Cache support #48769
- Correct docs to use new location for error handling configuration properties #48767
- Document spring-boot-starter-cloudfoundry on Cloud Foundry Support Page #48675
- Clarify javadoc to make it clear that HazelcastConfigCustomizer beans are only applied if Hazelcast is configured via a config file #48659
- Example using excludeDevtools property should document that optional dependencies should be enabled #48641
- Fix grammar and typos in the reference guide #48601
- Update Tracing section for Spring Boot 4's modularity #48576
🔨 Dependency Upgrades
- Upgrade to Classmate 1.7.3 #48783
- Upgrade to Elasticsearch Client 9.2.3 #48721
- Upgrade to Hibernate 7.2.1.Final #48857
- Upgrade to HttpClient5 5.5.2 #48784
- Upgrade to Jackson 2 Bom 2.20.2 #48910
- Upgrade to Jackson Bom 3.0.4 #48931
- Upgrade to JUnit Jupiter 6.0.2 #48785
- Upgrade to Lettuce 6.8.2.RELEASE #48859
- Upgrade to Logback 1.5.24 #48786
- Upgrade to Logback 1.5.25 #48885
- Upgrade to Micrometer 1.16.2 #48712
- Upgrade to Micrometer Tracing 1.6.2 #48713
- Upgrade to Native Build Tools Plugin 0.11.4 #48911
- Upgrade to Pooled JMS 3.1.9 #48787
- Upgrade to Postgresql 42.7.9 #48886
- Upgrade to R2DBC MSSQL 1.0.4.RELEASE #48858
- Upgrade to Reactor Bom 2025.0.2 #48714
- Upgrade to Spring AMQP 4.0.2 #48832
- Upgrade to Spring Batch 6.0.2 #48715
- Upgrade to Spring Data Bom 2025.1.2 #48716
- Upgrade to Spring Framework 7.0.3 #48717
- Upgrade to Spring GraphQL 2.0.2 #48718
- Upgrade to Spring HATEOAS 3.0.2 #48834
- Upgrade to Spring Integration 7.0.2 #48833
- Upgrade to Spring Kafka 4.0.2 #48719
- Upgrade to Spring Pulsar 2.0.2 #48720
- Upgrade to WebJars Locator Lite 1.1.3 #48788
- Upgrade to XML Maven Plugin 1.2.1 #48887
❤️ Contributors
Thank you to all the contributors who worked on this release:
@GaoSSR, @ShaunHaldane, @Zuohuang-Cai, @izeye, @mspiess, @ngocnhan-tran1996, and @philipbolting
v3.5.10
🐞 Bug Fixes
- Evaluation of bean conditions unnecessarily queries the bean factory for types that are not present #48836
- When a bean condition references a type that is not present, it appears as ? in the condition evaluation report #48835
- Actuator /info endpoint fails in Java 25 Native Image (VirtualThreadSchedulerMXBean support) #48810
- DataSourceBuilder cannot create oracle.ucp.jdbc.PoolDataSourceImpl in a native image #48702
- Application JAR created by extract command is not reproductible #48664
- AOT processing of tests should not be disabled when 'skipTests' is set #48661
- Fix zero-length byte buffer in InspectedContent #48649
📔 Documentation
- Update documentation for Buildpack's AOT Cache support #48768
- Document support for configuring arguments passed to Docker Compose #48657
- Clarify javadoc to make it clear that HazelcastConfigCustomizer beans are only applied if Hazelcast is configured via a config file #48634
- Fix grammar and typos in the reference guide #48596
🔨 Dependency Upgrades
- Upgrade to Classmate 1.7.3 #48775
- Upgrade to Hibernate 6.6.41.Final #48881
- Upgrade to HttpClient5 5.5.2 #48777
- Upgrade to Logback 1.5.25 #48882
- Upgrade to Micrometer 1.15.8 #48705
- Upgrade to Micrometer Tracing 1.5.8 #48706
- Upgrade to Pooled JMS 3.1.9 #48779
- Upgrade to Postgresql 42.7.9 #48883
- Upgrade to R2DBC MSSQL 1.0.4.RELEASE #48847
- Upgrade to Reactor Bom 2024.0.14 #48707
- Upgrade to REST Assured 5.5.7 #48884
- Upgrade to Spring AMQP 3.2.9 #48909
- Upgrade to Spring Data Bom 2025.0.8 #48708
- Upgrade to Spring Integration 6.5.6 #48921
- Upgrade to Spring Kafka 3.3.12 #48709
- Upgrade to Spring Pulsar 1.2.14 #48710
- Upgrade to Undertow 2.3.22.Final #48848
- Upgrade to WebJars Locator Lite 1.1.3 #48780
❤️ Contributors
Thank you to all the contributors who worked on this release:
@GaoSSR, @izeye, and @ngocnhan-tran1996
v4.0.1
⚠️ Noteworthy Changes
- Hibernate has been upgraded to 7.2.0.Final in response to Hibernate 7.1 moving to limited support
- spring-boot-starter-kotlin-serialization has been renamed to to spring-boot-starter-kotlinx-serialization-json and spring-boot-starter-kotlin-serialization-test has been renamed to spring-boot-starter-kotlinx-serialization-json-test. This change aligns the starters' names with those of their respective modules
- Using TestRestTemplate now requires a dependency on spring-boot-restclient
🐞 Bug Fixes
- JsonMixinModuleEntriesBeanRegistrationAotProcessor does not handle deprecated code #48564
- JdbcSessionAutoConfiguration may not match when using the auto-configured DataSource #48552
@ServiceConnectionfor LgtmStackContainer fails when logging endpoint is configured due to multiple OtlpLoggingConnectionDetails beans #48536- WebApplicationType does not consider modules when deduced from classpath #48517
- Spring Session auto-configuration fails in a war deployment as ServerProperties is not available #48493
- Opentelemetry logging export requires actuator module #48488
- RabbitHealthIndicator reports an error when version is missing from the connection's server properties #48487
- Actuator Info class has inconsistent nullability annotations and cannot be built with null value #48480
- Profiles retained during AOT processing are not configured in a native image #48476
- Security matchers and WebServerNamespace resolution can fail with NoClassDefFoundError when used in a traditional WAR deployment #48388
- HealthEndpointGroupMembershipValidator does not consider reactive health indicators causing NoSuchHealthContributorException to be thrown #48387
- spring.jackson.default-property-inclusion is not applied to content inclusion #48343
- TestRestTemplate.getRootUri() returns empty string #48330
- Redis health check reports an error when redis_version is missing from the INFO response #48328
- Parent's MeterRegistry beans are closed when child context closes #48325
- HttpMessageConverters picks up converter beans for both client and server #48310
- Conditions to auto-configure a RestClient are outdated with the modularization #48308
- A custom JwtTypeValidator that replaces the default can no longer be configured #48301
- PropertiesRestClientHttpServiceGroupConfigurer has highest precedence, preventing other configurers from being ordered ahead of it #48296
- SpringBootTest.UseMainMethod.WHEN_AVAILABLE and ALWAYS are incompatible with package-private or parameter-less main method #48275
- Conditions to auto-configure RestClient-based HTTP service clients are outdated with the modularization #48274
- Starter for Kotlinx Serialization Json is misnamed #48262
- ApplicationServletEnvironment is no longer configured in war deployments #48254
- RestClient.Builder bean present in
@SpringBootTestdue to spring-boot-starter-webmvc-test, but missing at runtime without restclient starter #48253 - ProblemDetail is rendered to XML incorrectly #48222
📔 Documentation
- Harmonize Kotlin example for HTTP Service client support #48577
- Document HttpMessageConverters detection changes in 4.0.1 #48574
- Improve javadoc for when to use class names rather than class references #48569
- Documentation has an outdated reference to the Jackson Kotlin Module #48534
- Caching documentation should clarify how to use a no-op implementation to run a test suite #48532
- Document that the default rolling policy for Log4j2 requires logging.file.path to be set #48527
- Review documentation and migration guide about changes in
@AutoConfigureCache#48522 - License header in build samples is displayed in the reference documentation #48478
- Configuring Two DataSources How-To code sample is inconsistent #48449
- Fix links to source files on GitHub #48398
- Documentation contains broken links to GitHub source files #48394
- Document that org.aspectj.weaver.Advice must be on the classpath to enable support for Micrometer's annotations #48360
- Correct the annotation in the Kotlin
@ConfigurationPropertiesSourceexample #48357 - Polish TestRestTemplate examples in the reference guide #48336
- Documentation missing for LocalTestWebServer #48333
- Update "Creating Your Own Starter" following modularisation #48317
- Fix links to javadoc in the reference documentation #48300
- Update references for RestTemplateCustomizer and RestTemplateBuilder classes in documentation #48295
- Remove modules section of the README following modularisation #48291
- Wrong number in Graceful Shutdown chapter #48284
- Mention new spring-boot-h2console module when describing how to use H2 Console #48278
- Clarify that
@EnableBatchProcessingturns off all batch auto-configuration, including schema initialization #48266 - Documented replacements for spring.jackson.generator and spring.jackson.parser are inverted #48255
- Document the need for a JdbcDialect bean when using Spring Data JDBC and AOT #48240
- Update reference documentation as Spring Batch's resourceless infrastructure means that it no longer always requires a DataSource #48233
- Kotlin auto-configuration examples are not annotated with
@AutoConfiguration#48228 - Revise "Use Liquibase for test-only migrations" section in reference manual #48219
- Infinispan Cache Documentation is outdated #48218
- Removed max-attempts properties metadata don't have replacement #48206
- Polish documentation on testing web applications and the various testing clients that are available #47948