⭐ New Features
- Expose structured request path from ServerHttpRequest in WebFlux [SPR-15648] #20207
- add EditorConfig file, help to unified code style [SPR-15644] #20203
- Use undecoded path for request mapping in WebFlux [SPR-15640] #20199
- Favor query parameters for content negotiation in WebFlux [SPR-15639] #20198
- Use lambda to refact the code [SPR-15637] #20196
- Replace ResolvableType with ParameterizedTypeReference in WebFlux APIs used in applications [SPR-15636] #20195
- ClientRequest needs way to set header, overriding current values [SPR-15635] #20194
- Refact iterator of Map with Java8's Map.forEach [SPR-15631] #20190
- Use the diamond syntax, remove the type declarations [SPR-15628] #20187
- Use Map.forEach instead of Map.entrySet().forEach [SPR-15627] #20186
- Provide support for Kotlin KClasses in WebTestClient API [SPR-15622] #20181
- Make SystemEnvironmentPropertySource.resolvePropertyName protected [SPR-15617] #20176
- UriUtils.encode* methods needs to use Charset instance. [SPR-15613] #20172
- Replace ParsingPathMatcher with PathPattern registry [SPR-15608] #20167
- Improve support for 0...n UnaryOperator to ExchangeMutatorWebFilter [SPR-15599] #20158
- GenericMessagingTemplate - add overloaded doReceive() for dynamic receiveTimeout [SPR-15591] #20150
- Provide access to the unexpanded URI template when using WebTestClient [SPR-15589] #20148
- Add support to WebTestClient for consuming the ExchangeResult [SPR-15587] #20146
- Need to adjust code in Spring Framework to allow compilation by Eclipse 4.7 compiler [SPR-15586] #20145
- HandlerStrategies should use Lists instead of Streams [SPR-15578] #20137
- Support missing properties from Content-Disposition spec [SPR-15555] #20114
- Add ability to get the Principal to RouterFunctions [SPR-15552] #20111
- ProtobufHttpMessageConverter: Make JSON format configurable [SPR-15550] #20109
- RestTemplate is missing "Typed" error handler. [SPR-15544] #20103
- Introduce null-safety of Spring Framework API [SPR-15540] #20099
- Consider reordering of RequestUpgradeStrategy detection in HandshakeWebSocketService [SPR-15539] #20098
- Revisit DispatcherHandler integration for RouterFunctions [SPR-15536] #20095
- Simplify adding ResponseCookie to ServerHttpResponse [SPR-15523] #20082
- Update Cookie headers in MockServerHttpRequest and Response [SPR-15522] #20081
- Defer logic in DefaultWebFilter.filter [SPR-15520] #20079
- Support WebFilter in RouterFunctions.toHttpHandler [SPR-15518] #20077
- Consider making DefaultWebFilterChain not change state [SPR-15517] #20076
- RequestPartMethodArgumentResolver in WebFlux does not support decoding (e.g. to JSON) the content of a part [SPR-15515] #20074
- Make it possible to pass method and URL to ResponseErrorHandler [SPR-15511] #20070
- Consider Renaming request-id [SPR-15501] #20060
- Parse request path only once during routing [SPR-15397] #19960
- Introduce a LocaleContextResolver abstraction in WebFlux [SPR-15036] #19602
- spring.ftl doesn't work on freemarker 2.3.24+'s auto escaping feature [SPR-14740] #19306
🪲 Bug Fixes
- JdkDynamicAopProxy constructs ReflectiveMethodInvocation with EmptyTargetSource.EMPTY_TARGET for static methods [SPR-15651] #20210
- Dramatic performance degradation on writing to DefaultDataBuffer after filling the initial capacity [SPR-15647] #20206
- NPE in AnnotationUtils.getValue [SPR-15642] #20201
- Protect DataSourceUtils#getConnection(DataSource) against null from DataSource [SPR-15641] #20200
- Spring Webflux: ServerRequest.queryParam() throws NullPointerException for a query parameter without "=" [SPR-15609] #20168
- Spring WebFlux fails with 500 if Accept-Language is set to an empty string [SPR-15603] #20162
- PathPattern "/{foo}.*" should be more specific than "/{foo}" [SPR-15597] #20156
- Make more obvious when WebTestClient exchangeMutator will not work [SPR-15570] #20129
- DDoS Spring 5 RouterFunction apps [SPR-15560] #20119
- {*...} pattern does not work on handler method [SPR-15558] #20117
- webflux handler fails in case invalid method was requested [SPR-15545] #20104
- When using ParsingPathMatcher in MVC user should not have to also explicitly set suffix matching [SPR-15303] #19868
- Spring WebFlux doesn't handle redirect: directives when media type is requested [SPR-15291] #19857