⭐ New Features
- Extract reusable method for URI validations #32440
- Allow UriTemplate to be built with an empty template #32432
- Optimize Coroutine invocations #32390
- Improve exception message when Scheduled tasks that are using Virtual Threads fail on shutdown #32381
- Add query parameters to MockMvc Kotlin DSL #32371
- Optimize content type parsing in
ServletServerHttpResponse
#32361 - Refine handling of disconnected client error in ExceptionHandlerExceptionResolver #32359
- Refine
\*HttpMessageConverter#getContentLength
return value null safety #32325 - Optimize HttpHeaders.getAcceptLanguageAsLocales #32318
- SimpleAsyncTaskScheduler: consistently apply default error handling #32298
- Use Spliterator of underlying collection in MutablePropertyValues / MutablePropertySources #32281
🐞 Bug Fixes
- SpEL fails to compile expression indexing into
boolean
array #32400 - WebClient Observations are missing error #32389
- WebClient request sent twice instantly when using
@Cacheable
#32370 - AopUtils.getMostSpecificMethod does not return original method for proxy-derived method anymore #32365
- Fix
ServletResponseHttpHeaders#get
null handling #32362 - Compiled SpEL expression fails if
#root
or#this
is a non-public type #32356 - Suspend handler methods fail on nullable
value class
parameters #32353 - Better protect against concurrent error handling for async requests #32340
- Performance degradation due to Kotlin value class checks #32334
- With value referenced from property file in XML configuration, setter selection can be random in case of overloaded setter methods (e.g. on SimpleClientHttpRequestFactory) #32329
constructor-impl
of Kotlinvalue class
is not called #32324- ContentCachingResponseWrapper no longer honors Content-Type and Content-Length #32317
- Hibernate native image support broken by
HHH-17643
#32311 - Revisit DatabaseMetadata#getProcedures to only apply fallback if original search yield more than one result #32295
- Remove Observation.Context from WebClient request #32198
📔 Documentation
- Refine "Redirecting to a resource" section code sample #32423
- Javadoc of ReactorNettyClientRequestFactory#setExchangeTimeout methods have wrong default value #32419
- Fix order of 2 sections in the Validation chapter of the reference manual #32408
- Fix Javadoc #32403
- Document that SpEL expressions using array construction cannot be compiled #32401
- Improve documentation for
@Sql
execution phases regarding lifecycle #32343 - Omit parameter names in REST Clients section of reference docs #32335
- Different transaction name when using
TransactionAspectSupport.currentTransactionStatus().transactionName
#32310 - Provide guidelines for using Kotlin properties with proxies (
@RequestScope
and similar use cases) #32287 - Correct documentation for
userDestinationPrefix
inMessageBrokerRegistry
#32272
🔨 Dependency Upgrades
❤️ Contributors
Thank you to all the contributors who worked on this release:
@Xednar, @ZeroCyan, @bsgrd, @ddaaac, @kilink, @qeeqez, and @quaff