⭐ New Features
- Support any HttpEntity implementing ResolvableTypeProvider #22931
- Early out in PropertyPlaceholderHelper if no placeholder exists #22870
- Don't throw an exception in CookieLocaleResolver, fallback to default locale instead #22861
- Streamline ReactiveAdapterRegistry.getAdapter usage #22842
- Consider logging classcast exceptions caused by lambdas at trace level #22834
- Ensure flush after StreamingResponseBody #22813
- Optimize writing with Mono Publisher #22800
- Disable ShallowEtagHeaderFilter when ETag handled in application #22797
- Avoid MessageFormat processing for default
@Pattern
validation message #22761 - Avoid SourceClass creation for annotations that are always ignored #22750
- Avoid expensive assertions in HttpRange #22742
- Avoid exceptions in ReflectionUtils.isObjectMethod(…) #22730
- Jackson2Tokenizer ignores USE_BIG_DECIMAL_FOR_FLOATS deserialization feature #22510
- StringHttpMessageConverter will add all the default charsets even if Accept-Charset is set explicitly #22506
- Fix CompletableFuture exception handling #22476
🪲 Bug Fixes
- Fix EncoderHttpMessageWriter.isStreamingMediaType() #22936
- Consistent handling of empty List entries in LinkedMultiValueMap #22912
- Check if null before accessing exception message in webflux InvocableHandlerMethod#logArgumentErrorIfNecessary #22900
- DefaultListableBeanFactory.destroySingleton(s) not thread-safe for manual singletons #22896
- MockHttpServletRequest raises IndexOutOfBoundsException when Accept-Language is not set #22877
- Avoid unguarded String concatenation for debug/trace logging #22874
- [Regression] 404 without ACCEPT request header results in a 406 in Spring Framework 5.1.6 #22853
- ResourceUrlEncodingFilter throws StringIndexOutOfBoundsException when %ED%B6 is in the URL path #22851
- MockCookie.parse(String) mishandles case sensitivity #22786
- WebClient fails to send POST body when ObjectMapper FLUSH_AFTER_WRITE_VALUE is false #22771
- More leaks related to Mono.just(dataBuffer) or Flux.just(dataBuffer) #22754
- Jackson2ObjectMapperBuilder prevents the registration of multiple modules with a null typeId #22740
- ProtobufEncoder and ProtobufDecoder buffer leaks #22731
- o.s.h.server.reactive.ChannelSendOperator may leak the memory on cancel/error #22720
- EL1072E when evaluating compiled comparison expression #22358
- Got 404 with non-ASCII coded static resources in webflux #22272
📔 Documentation
- NullPointerException in Base64Utils.encodeToString #22812
- Remove the PROPAGATION_ prefix in the documentation of enum Propagation #22809
- Inconsistent behavior when autowiring multiple beans by type as collection without matching beans #22735
- Acknowledge that HttpHeaders are case-insensitive #22723
❤️ Contributors
We'd like to thank all the contributors who worked on this release!