⭐ New Features
- Disable DTD and external entities support in XmlEventDecoder to prevent XXE and XML bomb attack [SPR-15797] #20352
- Avoid silent default to http://localhost:80 in ReactorHttpClientConnector [SPR-15782] #20337
- Use AsynchronousFileChannel + DataBufferUtils in WebFlux resource resolver/transformer chain [SPR-15773] #20328
- Provide convenience method for applying WebTestClientConfigurer [SPR-15770] #20325
- Improve handling of requests with an empty body and no content type to match Spring MVC [SPR-15758] #20313
- Introduce Kotlin Functional bean registration DSL [SPR-15755] #20310
- Improve performance of ReactiveAdapterRegistry [SPR-15747] #20303
- Add apply method to WebClient.Builder [SPR-15743] #20299
- add Mediatype for Nottingham Problem [SPR-15742] #20298
- Jackson2JsonEncoder should stream custom streaming types [SPR-15727] #20283
- Add write methods to DataBufferUtils [SPR-15726] #20282
- Add BodyToMono and BodyToFlux overrides that receive ParameterizedTypeReference [SPR-15725] #20281
- Convenience API for custom error handling on WebClient [SPR-15724] #20280
- Update getAttribute on ServerWebExchange and WebSession to align with Map getOrDefault [SPR-15718] #20274
- Cookie Support for Webflux Functional API [SPR-15715] #20271
- improve logging of DefaultCorsProcessor for rejected headers [SPR-15708] #20265
- AsyncHandlerInterceptor doesn't have a default method [SPR-15702] #20259
- Allow CompletableFuture creation via ListenableFuture [SPR-15696] #20255
- Avoid requiring uri("") when using Web(Test)Client baseUrl [SPR-15695] #20254
- Simplify applying a strategy to requests from WebTestClient and WebTestClient [SPR-15691] #20250
- Allow WebClientBuilder.Builder to be cloned [SPR-15690] #20249
- Align codec configuration in ExchangeStrategies.Builder and WebFluxConfigurer [SPR-15682] #20241
- Provide hook for framework customizations of the WebTestClient MockServerSpec [SPR-15674] #20233
- Kotlin class instantiation with optional parameters and default values [SPR-15673] #20232
- Option to combine typed PathPattern + PathPattern in PathPattern [SPR-15663] #20222
- Log a warning in Jackson builder when Kotlin is used without jackson-module-kotlin [SPR-15658] #20217
- Ordering of WebClient.filter(s) [SPR-15657] #20216
- [doc] Document urlDecode=false implies alwaysUseFullPath=true [SPR-15643] #20202
- Ordering support in InterceptorRegistration [SPR-15620] #20179
- Handle onError events that are sent by the servlet containers [SPR-15614] #20173
- First class WebSession change id support [SPR-15571] #20130
- Add CORS support for functional style routes for WebFlux [SPR-15567] #20126
- Expose mapped handler as an exchange attribute [SPR-15564] #20123
- Add Jackson Smile support to WebFlux [SPR-15424] #19985
- StandardMultipartHttpServletRequest cannot decode multipart Content-Disposition header encoded by FormHttpMessageConverter [SPR-15205] #19769
- Support ScriptEngine#eval(String, Bindings) in ScriptTemplateView [SPR-15115] #19682
- Fallback to defaultContentType if nothing more specific and producible has been specified in request [SPR-11114] #15740
🪲 Bug Fixes
- Parse error when reading JSON through the Jackson non-blocking parser [SPR-15803] #20358
- Support IPv6 Host addresses in HttpHeaders [SPR-15799] #20354
- WebClient fails on empty JSON array response [SPR-15794] #20349
- Returning ResponseEntity from WebFlux controller method declared to return Object serialises entire response entity to response body [SPR-15785] #20340
- WebClient completes abruptly emitting null [SPR-15784] #20339
- WiretapConnector does not clean up exchanges [SPR-15744] #20300
- Issue with ServerRequest's queryParams [SPR-15740] #20296
- ResponseSpec#toEntity(...) fails when response status code is 5xx [SPR-15739] #20295
- WebFlux can't serialize "Object" return types as response body [SPR-15731] #20287
- org.apache.tomcat.websocket.WsSession.requestUri can be null [SPR-15721] #20277
- XmlEventDecoder triggers IllegalReferenceCountException at AbstractByteBuf [SPR-15707] #20264
- Default Locale not set on Spring Webflux [SPR-15705] #20262
- Exception Handler methods do not receive the original exception as argument [SPR-15701] #20258
- ClientResponse bodyToFlux fails when encoding empty JSON array [SPR-15685] #20244
- WebClient's handling of empty bodies seems broken [SPR-15679] #20238
- Inconsistent
@Nullable
on AbstractDestinationResolvingMessagingTemplate [SPR-15670] #20229 - Disable Servlet request async timeout for reactive type streaming scenarios in Spring MVC [SPR-15669] #20228
- ServerHttpRequest getURI doesn't return the port the application is running on [SPR-15084] #19650