⭐ New Features
- Improve
SpringValidatorAdapterandMethodValidationAdapterperformance #36621 - Support JSON array decoding to
FluxinKotlinSerializationJsonDecoder#36597 - Deprecate
methodIdentification()inCacheAspectSupportfor removal #36575 - Add MockRestServiceServer#createServer variant for RestClient #36572
- Create RestClientXhrTransport variant replacing RestTemplateXhrTransport #36566
- Improve error handling in multipart codecs #36563
- Make
ApplicationListenerMethodAdapter#getTargetMethod()public #36558 - ApiVersionConfigurer.setSupportedVersionPredicate() returns void instead of ApiVersionConfigurer #36551
- LazyConnectionDataSourceProxy does not work well with Hibernate's multi-tenancy by schema strategy #36527
- Add registerManagedResource variant with bean key argument to MBeanExporter #36520
- Handle blank Accept-Language header in AcceptHeaderLocaleResolver #36513
- Make AbstractStreamingClientHttpRequest and AbstractBufferingClientHttpRequest public #36501
- MySQL Error 149 (Galera/WSREP conflict) not translated to ConcurrencyFailureException in Spring JDBC/ORM #36499
- Add PreFlightRequestFilter #36482
- Support configuration of extension context scope for
SpringExtensionvia Spring or JUnit properties #36460 - Lower log level of "Cache miss for REQUEST dispatch" in HandlerMappingIntrospector #36309
🐞 Bug Fixes
- WebDataBinder unnecessarily instantiates collections when using the "!" and "_" prefixes #36625
- Cache pollution from high-cardinality FieldError default messages in MessageSourceSupport #36609
MergedAnnotationdoes not useClassLoaderfor method or field #36606@Sqlfails ifDataSourceis wrapped in aTransactionAwareDataSourceProxy#36611AnnotatedTypeMetadatano longer retains source declaration order on Java 24+ #36598MergedAnnotation.asMap()fails when an attribute references a non-existent class #36586FileSystemResourcedoes not strictly follow theResource#isReadable()contract #36584- Converter overrides in HttpMessageConverters only apply when defaults are registered #36579
- Invalid method return type metadata for ClassFile variant on JDK 24+ #36577
- Fix Writer lifecycle for
AbstractJsonHttpMessageConverter.writeInternal(Object, Type, Writer)#36565 - Flushing-related regression in
SseServerResponse#36537 - LazyConnectionDataSourceProxy does not pass on holdability to target Connection #36528
AnnotationBeanNameGeneratorfails when an annotation references a non-existent class #36524- Perserve default API version in RestClientAdapter #36514
- Inconsistent codings resolution in resource resolvers #36507
DefaultJmsListenerContainermay hang in an endless loop indoShutdown#36506- Query not hidden in DefaultClientResponse checkpoint #36502
- RestClient closes stream for ResponseEntity responses #36492
- IllegalStateException when using websocket handshake headers with Tomcat #36486
- Invalid nullness information for ParameterizedTypeReference #36477
- WebTestClient cannot assert null list elements #36476
- Handle Kotlin nullable value class param correctly in
CoroutineUtils#36449 - Remove RFC 2047 encoding from Content-Disposition filename #36328
- Parent traceId is not reused when calling WebClient.awaitExchange function #36182
📔 Documentation
- Clarify semantics of HttpMethod.valueOf() #36652
- Document whitespace semantics in SpEL expressions #36628
- Document that
spring.profiles.activeis ignored by@ActiveProfiles#36600 MergedAnnotation.asAnnotationAttributes()Javadoc incorrectly states that it creates an immutable map #36567- Fix incorrect Javadoc in HandlerMethodReturnValueHandlerComposite regarding caching #36555
- Fix incorrect method name in
TypeDescriptor.array()Javadoc #36549 - Introduce Kotlin examples for Bean Overrides (
@MockitoBean, etc.) #36541 - Fix incorrect cross-reference links in AbstractEnvironment Javadoc #36516
- Document RetryTemplate#invoke variants in reference manual #36452
- Link observability section to Micrometer Observation Handler docs #34994
🔨 Dependency Upgrades
❤️ Contributors
Thank you to all the contributors who worked on this release:
@Mohak-Nagaraju, @Sineaggi, @T45K, @angry-2k, @bebeis, @cookie-meringue, @dmitrysulman, @elgunshukurov, @itsmevichu, @junhyung8795, @msridhar, @nameearly, @tobifasc, and @xxxxxxjun