⭐ New Features
- Task "docsZip" copies duplicate reference files [SPR-16789] #21329
- Consistent target method resolution for event and caching expressions [SPR-16779] #21319
- WebFlux handles requests with an illegal Host header inconsistently [SPR-16778] #21318
- Implement ReactorNettyWebSocketSession.close [SPR-16774] #21314
- Prevent unnecessary ExchangeStrategies.withDefaults() in DefaultWebClientBuilder [SPR-16771] #21311
- Improve performance of StringUtils#trimWhitespace method [SPR-16766] #21307
- Validate contextPath in RedirectView [SPR-16752] #21293
- No support for non-standard HTTP status codes in reactive ClientHttpResponse [SPR-16748] #21289
- Expose configuration options for "selector" header [SPR-16732] #21273
- Flag misguided evaluation attempts in OperatorMatches [SPR-16731] #21272
- Avoid repeated superclass introspection in AnnotationUtils.findAnnotation [SPR-16730] #21271
- SynchronossPartGenerator should reuse PartBodyStreamStorageFactory [SPR-16727] #21268
- AbstractMessageReaderArgumentResolver.readBody should defer creating the error [SPR-16726] #21267
- Revise JCA MessageEndpoint exception logging and propagation [SPR-16717] #21258
- Revise cache safety check to avoid performance regression in EAR packaged applications on WildFly [SPR-16714] #21255
- Add a default constructor to Reactive UrlBasedCorsConfigurationSource [SPR-16712] #21253
- Proper exception for controller method return types that do not work with MvcUriComponentsBuilder (e.g. final classes) [SPR-16710] #21251
- Reduce log verbosity on server-side after client unsubscribes from SSE stream [SPR-16688] #21229
- Kotlin unable to inherit type for WebTestClient#BodySpec [SPR-15692] #20251
🪲 Bug Fixes
- Restore YamlProcessor duplicate key handling against SnakeYAML 1.18+ (plus compatibility with 1.21) [SPR-16791] #21331
- Singleton from a FactoryBean may be post-processed twice if the first post-processing triggers a second attempt to get the bean [SPR-16783] #21323
- ResourceBundleMessageSource should avoid ResourceBundle.Control on Jigsaw [SPR-16776] #21316
- NPE in SimpleClient-HttpURLConnection with errorstream-buffering [SPR-16773] #21313
- YamlPropertiesFactoryBean loses entries in the YAML document that have an empty array value [SPR-16769] #21310
- Misleading error message when evaluating T operator [SPR-16762] #21303
- Jaxb2XmlDecoder is unable to decode a single element [SPR-16759] #21300
- AopUtils.getMostSpecificMethod should expose dynamic proxy class methods [SPR-16757] #21298
- ConfigurationClassBeanDefinitionReader registers duplicate BeanDefinition for nested scoped component [SPR-16756] #21297
- IllegalStateException: InputStream has already been read when returning ResponseEntity [SPR-16754] #21295
- Decoding ServerSentEvent fails when using generic type [SPR-16744] #21285
- Exception swallowed in ResponseEntityExceptionHandler [SPR-16743] #21284
- AnnotationAwareOrderComparator uses Order instead of Priority for DecoratingProxy [SPR-16739] #21280
- Generic constructor argument (e.g. ObjectProvider) fails to resolve for inner class [SPR-16734] #21275
- Unnecessary proxying with MethodMapTransactionAttributeSource [SPR-16733] #21274
- Restore handling of 0 bytes read in ServletServerHttpRequest [SPR-16728] #21269
- AspectJ execution pointcut does not detect methods in superinterface anymore [SPR-16723] #21264
- Inconsistent getTypeForFactoryMethod results for parameterized factory method [SPR-16720] #21261
- SpringFailOnTimeout loses original exception when triggering timeout in finally block [SPR-16716] #21257
- Null check needed in AnnotationUtils.getAnnotation [SPR-16708] #21249
- StackOverFlowError and memory leaking when sending large files slowly with Webflux + Undertow [SPR-16702] #21243
- ClassCastException in TestDispatcherServlet [SPR-16695] #21236
- PathPatternPredicate leaves path variables in request even if predicate doesn't match [SPR-16692] #21233