⚠️ 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 5.6 #48743
- Upgrade to HttpCore5 5.4 #48744
- Upgrade to Jackson 2 Bom 2.21.0 #48892
- Upgrade to Jackson Bom 3.0.4 #48932
- Upgrade to JUnit Jupiter 6.0.2 #48851
- Upgrade to Kotlin 2.3.0 #48745
- Upgrade to Kotlin Serialization 1.10.0 #48938
- Upgrade to Lettuce 6.8.2.RELEASE #48860
- Upgrade to Logback 1.5.25 #48893
- Upgrade to Maven Assembly Plugin 3.8.0 #48746
- Upgrade to Maven Jar Plugin 3.5.0 #48747
- Upgrade to Maven Resources Plugin 3.4.0 #48748
- Upgrade to Maven Source Plugin 3.4.0 #48749
- Upgrade to Maven War Plugin 3.5.1 #48750
- Upgrade to Micrometer 1.17.0-M1 #48722
- Upgrade to Micrometer Tracing 1.7.0-M2 #48723
- Upgrade to Mockito 5.21.0 #48751
- Upgrade to Native Build Tools Plugin 0.11.4 #48912
- Upgrade to OpenTelemetry 1.57.0 #48752
- Upgrade to Oracle Database 23.26.0.0.0 #48753
- Upgrade to Pooled JMS 3.2.2 #48854
- Upgrade to Postgresql 42.7.9 #48894
- Upgrade to R2DBC MSSQL 1.0.4.RELEASE #48846
- Upgrade to Rabbit AMQP Client 5.28.0 #48755
- Upgrade to Rabbit Stream Client 1.4.0 #48761
- Upgrade to Reactor Bom 2025.0.2 #48724
- Upgrade to Selenium 4.40.0 #48895
- Upgrade to Selenium HtmlUnit 4.40.0 #48913
- Upgrade to Spring AMQP 4.1.0-M1 #48800
- Upgrade to Spring Batch 6.0.2 #48725
- Upgrade to Spring Data Bom 2025.1.2 #48726
- Upgrade to Spring Framework 7.0.3 #48727
- Upgrade to Spring GraphQL 2.0.2 #48728
- Upgrade to Spring HATEOAS 3.0.2 #48837
- Upgrade to Spring Integration 7.1.0-M1 #48801
- Upgrade to Spring Kafka 4.0.2 #48729
- Upgrade to Spring Pulsar 2.0.2 #48730
- Upgrade to Spring Security 7.1.0-M1 #48802
- Upgrade to SQLite JDBC 3.51.1.0 #48758
- Upgrade to Versions Maven Plugin 2.21.0 #48896
- Upgrade to WebJars Locator Lite 1.1.3 #48855
- Upgrade to XML Maven Plugin 1.2.1 #48897
- Upgrade to XmlUnit2 2.11.0 #48760
❤️ Contributors
Thank you to all the contributors who worked on this release:
@Asanio06, @CatiaCorreia, @GaoSSR, @HuitaePark, @ShaunHaldane, @Zuohuang-Cai, @ddongjunn, @izeye, @michaldo, @mspiess, @ngocnhan-tran1996, @nosan, @paullee714, @philipbolting, @quaff, @scordio, and @vpavic