Releases: spring-projects/spring-boot
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
🔨 Dependency Upgrades
v3.5.9
🐞 Bug Fixes
- RabbitHealthIndicator reports an error when version is missing from the connection's server properties #48486
- Profiles retained during AOT processing are not configured in a native image #48475
- NullPointerException in UndertowWebServer.destroy() when using
@DirtiesContextand Citrus Spring Boot Simulator #48450 - Redis health check reports an error when redis_version is missing from the INFO response #48326
- Parent's MeterRegistry beans are closed when child context closes #48324
- SpringBootTest.UseMainMethod.WHEN_AVAILABLE and ALWAYS are incompatible with package-private or parameter-less main method #48271
📔 Documentation
- Documentation has an outdated reference to the Jackson Kotlin Module #48533
- Caching documentation should clarify how to use a no-op implementation to run a test suite #48531
- Document that the default rolling policy for Log4j2 requires logging.file.path to be set #48526
- License header in build samples is displayed in the reference documentation #48477
- Configuring Two DataSources How-To code sample is inconsistent #48448
- Improve javadoc for when to use class names rather than class references #48395
- Document that org.aspectj.weaver.Advice must be on the classpath to enable support for Micrometer's annotations #48359
- Polish TestRestTemplate examples in the reference guide #48335
- Fix links to javadoc in the reference documentation #48299
- Clarify that
@EnableBatchProcessingturns off all batch auto-configuration, including schema initialization #48265 - Kotlin auto-configuration examples are not annotated with
@AutoConfiguration#48227 - Infinispan Cache Documentation is outdated #48217
- Revise "Use Liquibase for test-only migrations" section in reference manual #48169
🔨 Dependency Upgrades
- Prevent upgrade to Netty 4.1.129.Final #48508
- Upgrade to AspectJ 1.9.25.1 #48557
- Upgrade to Hibernate 6.6.39.Final #48540
- Upgrade to Jetty 12.0.31 #48455
- Upgrade to jOOQ 3.19.29 #48456
- Upgrade to Logback 1.5.22 #48507
- Upgrade to MariaDB 3.5.7 #48558
- Upgrade to Micrometer 1.15.7 #48423
- Upgrade to Micrometer Tracing 1.5.7 #48424
- Upgrade to Netty 4.1.130.Final #48541
- Upgrade to Pooled JMS 3.1.8 #48559
- Upgrade to Pulsar 4.0.8 #48457
- Upgrade to Quartz 2.5.2 #48458
- Upgrade to Reactor Bom 2024.0.13 #48425
- Upgrade to Spring Authorization Server 1.5.5 #48426
- Upgrade to Spring Data Bom 2025.0.7 #48427
- Upgrade to Spring Framework 6.2.15 #48428
- Upgrade to Spring GraphQL 1.4.4 #48429
- Upgrade to Spring Integration 6.5.5 #48560
- Upgrade to Spring LDAP 3.3.5 #48430
- Upgrade to Spring Pulsar 1.2.13 #48431
- Upgrade to Spring Session 3.5.4 #48432
- Upgrade to Testcontainers 1.21.4 #48542
- Upgrade to UnboundID LDAPSDK 7.0.4 #48459
❤️ Contributors
Thank you to all the contributors who worked on this release:
@banseok1216, @berry120, @dmitrysulman, @geopark021, @noojung, @scottfrederick, @vpavic, and @youngledo
v3.4.13
🐞 Bug Fixes
- RabbitHealthIndicator reports an error when version is missing from the connection's server properties #48484
- NullPointerException in UndertowWebServer.destroy() when using
@DirtiesContextand Citrus Spring Boot Simulator #48446 - Profiles retained during AOT processing are not configured in a native image #48408
- Redis health check reports an error when redis_version is missing from the INFO response #48320
- Parent's MeterRegistry beans are closed when child context closes #48319
📔 Documentation
- Caching documentation should clarify how to use a no-op implementation to run a test suite #48529
- Documentation has an outdated reference to the Jackson Kotlin Module #48525
- Document that the default rolling policy for Log4j2 requires logging.file.path to be set #48524
- License header in build samples is displayed in the reference documentation #48474
- Configuring Two DataSources How-To code sample is inconsistent #48407
- Document that org.aspectj.weaver.Advice must be on the classpath to enable support for Micrometer's annotations #48358
- Polish TestRestTemplate examples in the reference guide #48334
- Fix links to javadoc in the reference documentation #48298
- Clarify that
@EnableBatchProcessingturns off all batch auto-configuration, including schema initialization #48264 - Kotlin auto-configuration examples are not annotated with
@AutoConfiguration#48220 - Infinispan Cache Documentation is outdated #48191
🔨 Dependency Upgrades
- Prevent upgrade to Netty 4.1.129.Final #48505
- Upgrade to AspectJ 1.9.25.1 #48554
- Upgrade to Hibernate 6.6.39.Final #48538
- Upgrade to Jetty 12.0.31 #48452
- Upgrade to jOOQ 3.19.29 #48453
- Upgrade to Logback 1.5.22 #48504
- Upgrade to Micrometer 1.14.14 #48412
- Upgrade to Micrometer Tracing 1.4.13 #48413
- Upgrade to Netty 4.1.130.Final #48539
- Upgrade to Pooled JMS 3.1.8 #48555
- Upgrade to Reactor Bom 2024.0.13 #48414
- Upgrade to Spring Authorization Server 1.4.8 #48415
- Upgrade to Spring Data Bom 2024.1.13 #48416
- Upgrade to Spring Framework 6.2.15 #48417
- Upgrade to Spring GraphQL 1.3.7 #48418
- Upgrade to Spring Integration 6.4.10 #48556
- Upgrade to Spring LDAP 3.2.16 #48419
- Upgrade to Spring Pulsar 1.2.13 #48420
- Upgrade to Spring Session 3.4.7 #48421
- Upgrade to Spring WS 4.0.17 #48422
- Upgrade to Tomcat 10.1.50 #48506
❤️ Contributors
Thank you to all the contributors who worked on this release:
@berry120, @dmitrysulman, @geopark021, @noojung, and @youngledo
v4.0.0
Full release notes for Spring Boot 4.0 are available on the wiki. There is also a migration guide to help you upgrade from Spring Boot 3.5.
⭐ 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](https://github.com/spring-projects/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