⭐ New Features
- Compatibility with Jackson 2.12 #25907
- Loggers apparently constructed on a per HTTP request basis in reactive web code cause CPU overhead #25900
@ControllerAdvice
order defined via@Order
on a@Bean
method is not applied #25872- Add missing awaitBodilessEntity and createExceptionAndAwait ClientResponse extensions #25866
- Add Dependencies Manifest Entry to spring-core #25852
- Subclasses of UrlBasedViewResolver could avoid reflection when creating instances of View #25847
- Add option to disable Last-Modified handling when serving static resources #25845
- FormHttpMessageConverter to preserve parameters from the input MediaType #25839
- Request data binding fails for params with an empty array "[]" suffix #25836
- Support for an async determination of status and headers with a WebMvc HandlerFunction #25828
- Deprecate LiveBeansView #25820
- MultipartFile[] required controller param, not throwing exception #25819
- Optimize StringUtils trimLeading/Trailing methods #25810
- Set the sameSite cookie attribute in ClientHttpResponse implementations #25785
- Unable to change Clock for spring framework scheduling #25782
- Resolve Principal argument only when not annotated #25780
- Use the function endpoint, filter the handler function, and find that remoteAddress is null, params is empty #25776
- Add kotlinx.serialization JSON support to Spring WebFlux #25771
- Make path pattern optional in router functions #25752
- Deprecate WebClient#exchange() and provide safer alternatives #25751
- Easing the application of CORS default settings through the WebMvcConfigurer#corsConfigurer method #25716
- Empty or blank required UUID header validation results in 200 response status #23939
- Support suspending handler methods in Spring MVC #23611
- Introduce Converter.andThen(...) #23379
- Remove inefficiency in HttpStatus.series() #22366
- Provide Gson/JSON-B MessageConverter for spring-messaging (aligned with spring-web) #21496
- Discover test configuration on enclosing class for nested test class [SPR-15366] #19930
🪲 Bug Fixes
- WebTestClient no longer captures the URI template #25854
- Webflux Routing DSL's onError filters execute in unexpected order #25541
- TransactionalOperator.executeAndAwait returns value too early #25007
📔 Documentation
- Document DefaultPartHttpMessageReader #25827
- Update WebFlux documentation with regards to logging appenders #25547
- Upgrade to Asciidoctor Gradle plugin 3.x #24991
🔨 Dependency Upgrades
- Upgrade to Kotlin Coroutines 1.4.0-M1 #25914
- Upgrade to RSocket 1.1.0-RC1 #25898
- Upgrade to Reactor 2020.0.0-RC2 #25884
- Upgrade to Kotlin 1.4.10 #25779
❤️ Contributors
We'd like to thank all the contributors who worked on this release!