Skip to content

Releases: spring-projects/spring-boot

v4.1.0-M1

22 Jan 17:13

Choose a tag to compare

v4.1.0-M1 Pre-release
Pre-release

⚠️ Noteworthy Changes

  • The dependency on org.eclipse.jetty.ee11:jetty-ee11-servlets has been removed from spring-boot-jetty as it was unnecessary and unused. If your application code depends on a class from jetty-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 @AutoConfigureWebServer test annotation to support @SpringBootTest with 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 @ConfigurationProperties annotation 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 ...
Read more

v4.0.2

22 Jan 14:47

Choose a tag to compare

⚠️ Noteworthy Changes

  • The dependency on org.eclipse.jetty.ee11:jetty-ee11-servlets has been removed from spring-boot-jetty as it was unnecessary and unused. If your application code depends on a class from jetty-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 @ConfigurationProperties annotation 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

22 Jan 12:15

Choose a tag to compare

🐞 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

18 Dec 17:50

Choose a tag to compare

⚠️ 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
  • @ServiceConnection for 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 @SpringBootTest due 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 @ConfigurationPropertiesSource example #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 @EnableBatchProcessing turns 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

  • Upgrade to AspectJ 1.9.25.1 #48561
  • Upgrade to Elasticsearch Client 9.2.2 #48447
  • Upgrade to Groovy 5.0.3 #48460
  • Upgrade to Hibernate 7.2.0.Final #48518
  • Upgrade to Jackson Bom 3.0.3 #48462
  • Upgrade to Jetty 12.1.5 #48463
  • Upgrade to jOOQ 3.19.29 #48464
  • Upgrade to Json Path 2...
Read more

v3.5.9

18 Dec 11:49

Choose a tag to compare

🐞 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 @DirtiesContext and 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 @EnableBatchProcessing turns 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

18 Dec 09:00

Choose a tag to compare

🐞 Bug Fixes

  • RabbitHealthIndicator reports an error when version is missing from the connection's server properties #48484
  • NullPointerException in UndertowWebServer.destroy() when using @DirtiesContext and 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 @EnableBatchProcessing turns 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

20 Nov 18:18

Choose a tag to compare

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, @JsonTest fails 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...
Read more

v3.5.8

20 Nov 14:16

Choose a tag to compare

⚠️ Noteworthy changes

🐞 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 @ConditionalOnSingleCandidate with 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 @PreDestroy methods #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

20 Nov 11:22

Choose a tag to compare

⚠️ Noteworthy changes

🐞 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 @ConditionalOnSingleCandidate with 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 @PreDestroy methods #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

06 Nov 21:46

Choose a tag to compare

v4.0.0-RC2 Pre-release
Pre-release

⭐ 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 @AutoConfigureWebMvc configured 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
  • @JsonTest and @AutoConfigureJson fail 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