⭐ New Features
- Consider adding originalMessage to ErrorMessage [SPR-15459] #22193
- Unable to emulate upload filename browser behaviour with RestTemplate [SPR-15538] #20097
- Cache spring.factories loads [SPR-15509] #20068
- Improve 500 error handling and reporting in WebFlux [SPR-15506] #20065
- WebTestClient Support WebFilter only [SPR-15499] #20058
- WebTestClient should support custom HandlerMethodArgumentResolver [SPR-15495] #20055
- Support resolving Mono & Mono [SPR-15494] #20054
- Revisit handling of 4xx and 5xx status codes in WebClient [SPR-15486] #20046
- Expose Jackson2CodecSupport mime types for custom override [SPR-15474] #20034
- Support RequestMappingHandlerMapping registrations in the StandaloneMockMvcBuilder setup [SPR-15472] #20032
- Align WebMvcConfigurer with WebFluxConfigurer in terms of default methods [SPR-15465] #20025
- WebFlux should support Flux<?> and Flux rendering [SPR-15464] #20024
- Configure default settings for Servlet async request timeout for WebFlux [SPR-15463] #20023
- Add body(Object) method to ServerResponse.BodyBuilder [SPR-15461] #20021
- Move RxNetty support in test scope [SPR-15444] #20005
- Use ClientCodecConfigurer in ExchangeStrategies [SPR-15435] #19996
- Add "use" in Spring API documentation (Javadoc) [SPR-15427] #19988
- Add Consumer response body asssertions to WebTestClient [SPR-15421] #19982
- Add JSON content and JsonPath options to WebTestClient [SPR-15420] #19981
- Allow for single-pass matching in PathPattern [SPR-15419] #19980
- Functional bean dependencies tracking [SPR-15417] #19979
- JmsListener should allow delivery mode on response [SPR-15408] #19971
- Consider error handling strategy and support for WebClient [SPR-15403] #19966
- Deprecate AsyncRestTemplate in favour of WebClient [SPR-15399] #19962
- Refactor WebClient to not allow request body for GET/HEAD/etc [SPR-15394] #19957
- Support for
@Order
on nested configuration classes [SPR-15384] #19947- Support server-side HttpMessage[Reader|Writer] in WebFlux fn [SPR-15370] #19934
- Resolve async attributes in View hierarchy instead of ViewResolutionResultHandler [SPR-15368] #19932
- Improve support for fixed content type in ContentNegotiationManager [SPR-15367] #19931
- Support for reactive types in return values from Spring MVC controllers [SPR-15365] #19929
- Documentation for WebFlux fn [SPR-15362] #19925
- Return 5xx/4xx status code and print the reason in logs for CodecException [SPR-15355] #19918
- Simplify creating ServerWebExchange for testing [SPR-15350] #19913
- WebTestClient Support WebFilter [SPR-15349] #19912
- Support testing WebFilterChain [SPR-15348] #19911
- Support ResponseStatusException in WebFlux functional [SPR-15344] #19907
- Make SpringExtension.getApplicationContext() public [SPR-15340] #19903
- Add PathPattern method that gives remaining path given a match [SPR-15336] #19899
- Cannot test finite SSE because converters are registered in a funny order [SPR-15331] #19894
- Improve error reporting on method arguments that don't support reactive types [SPR-15297] #19862
- Simplify access to request/response object in WebClient [SPR-15294] #19860
- Introduce ServerResponse Kotlin extensions [SPR-15293] #19859
- Polish Kotlin routing DSL [SPR-15292] #19858
- Use Java 8 getDeclaredAnnotation method in AnnotationUtils [SPR-15287] #19853
- Reliably detect
@Cacheable
declarations on interface methods [SPR-15271] #19836- Add option for trailing separator matching in PathPatternParser [SPR-15260] #19825
- WebTestClient support for initializing the MockServerHttpRequest [SPR-15250] #19815
- Customizable Jackson ObjectMapper in WebFluxConfigurationSupport [SPR-15247] #19812
- Avoid creating thread pool in WebSocket Java config when SockJS not used [SPR-15233] #19798
- Update Cookie headers in MockHttpServletRequest and Response [SPR-15225] #19790
- Controller API for HTML rendering in WebFlux [SPR-15211] #19775
- Mock MVC / RequestBuilder should handle Accept-Language header appropriately [SPR-15209] #19773
- Data binding with immutable objects (Kotlin / Lombok /
@ConstructorProperties
) [SPR-15199] #19763- Print session attributes in PrintingResultHandler in Spring MVC Test [SPR-15189] #19755
- MockMvcClientHttpRequestFactory should implement AsyncClientHttpRequestFactory as well [SPR-15181] #19747
- Support for
@ControllerAdvice
on the reactive side [SPR-15132] #19698- Cglib proxy not working with
@Async
if there is another interceptor [SPR-14949] #19516- Support for Jackson 2.9 [SPR-14925] #19492
- Support for JSON Binding API (JSON-B) [SPR-14923] #19490
- Reactive type support in org.springframework.core.Conventions [SPR-14915] #19482
- Reactive multipart request support [SPR-14546] #19114
- CGLIB proxies should still consider
@Transactional
annotations on interface methods [SPR-14322] #18894🪲 Bug Fixes
- NPE thrown by WriteResultPublisher$State$2.publishComplete caused by a thread-safety issue [SPR-15418] #22192
- ISE is thrown when the client disconnects while the server is still sending the response [SPR-15412] #22191
- ResponseStatusException should allow to construct an instance without a reason [SPR-15524] #20083
- ResponseEntity<Flux<?>> causes Jackson binding exception [SPR-15478] #20038
- ServerResponse.BodyBuilder.body(Object) shadows body(Publisher) in Kotlin ServerResponseExtensions [SPR-15467] #20027
- Spel Expressions leaks classes [SPR-15460] #20020
- Spring MVC
@ResponseBody
handling of Flux<?> inconsistent when type of result is unknown [SPR-15456] #20017 - Fix writing serialized JSON with WebClient and WebTestClient [SPR-15443] #20004
- AbstractGenericHttpMessageConverter.canWrite(Type, Class, MediaType) doesn't call canWrite(Class, MediaType) anymore [SPR-15434] #19995
- Use ServerCodecConfigurer in HandlerStrategies [SPR-15415] #19977
- Awkward binary incompatibility in ResponseBodyEmitterReturnValueHandler [SPR-15410] #19973
- NPE thrown by AbstractListenerWriteFlushProcessor.cancel [SPR-15393] #19956
- CharSequenceEncoder should support all media types [SPR-15374] #19938
- Regression: CssLinkResourceTransformer is now incompatible with relative links [SPR-15369] #19933
- ResourceRegionHttpMessageWriter should not use the response content-type [SPR-15358] #19921
- Content-type resolution issue in EncoderHttpMessageWriter [SPR-15357] #19920
- Undertow ZeroCopyHttpOutputMessage exception [SPR-15343] #19906
- WebFlux SSE controller does not detect disconnected client [SPR-15306] #18523
📔 Documentation