⭐ New Features
- DefaultCacheAwareContextLoaderDelegate should log which application context instance was stored or retrieved from cache #22925
- Replace signal materialization in TransactionAspectSupport with usingWhen #22911
- MergedAnnotation meta-data support #22909
- Support Publisher in MultipartBodyBuilder#asyncPart #22876
- Consider adding is*Enabled() methods to LogAccessor #22862
- Add getRoot() to MergedAnnotation #22818
- Expose StompSubProtocolWebSocketHandler metrics #22807
- Create RSocketRequesterBuilder in spring-messaging #22806
- Return value doesn't serialize to JSON when return type is Mono of Interface in WebFlux #22803
- Some trivial optimization in method populateBean() #22792
- Consistently implement decodeToMono by joining buffers first #22783
- Add decodeDataBuffer to Decoder and encodeValue to Encoder #22782
- Add coroutines support to RSocket
@MessageMapping
and RSocketRequester #22780 - Add CBOR codec (single value only) #22767
- Add route(RequestPredicate, HandlerFunction) variant to RouterFunctions builder #22701
- Handle Optional<?>
@RequestParam
() when generating URL using MvcUriComponentsBuilder #22656 - Add reactive transaction support SPI #22646
- Reactive transaction management support #22590
- Support constructor injection without
@Autowired
when using JUnit Jupiter in spring-test #22286 - Add protected methods to resolve the target type for payload arguments [SPR-17503] #22035
- Consumes condition support for optional content [SPR-17478] #22010
- Consistent error handling when streaming with servlet vs reactive stack [SPR-17440] #21972
- Create a WebFilter for ServerWebExchange Reactor Context [SPR-17213] #21746
- Make WebFlux multipart support fully Reactive [SPR-17122] #21659
🪲 Bug Fixes
@Configuration
(proxyBeanMethods = false) cannot implement ImportAware #22920- Fix suspend/resume in AbstractReactiveTransactionManager #22918
- Fix suspending handler method type handling #22827
- LinkedCaseInsensitiveMap track removals via keySet, entrySet or values #22821
- Support suspending functions returning Flow #22820
- LinkedMultiValueMap.getFirst - check that values is not empty #22421
📔 Documentation
🔨 Dependency Upgrades
- Upgrade to Reactor Dysprosium #22930
❤️ Contributors
We'd like to thank all the contributors who worked on this release!