⭐ New Features
- WebTestClient assert failures should log request and response details [SPR-15249] #19814
- Use Map.getOrDefault in AbstractSqlParameterSource.getSqlType [SPR-15238] #19803
- Use Class.getTypeName() where appropriate [SPR-15237] #19802
- Expose ResponseCookie map from ClientResponse [SPR-15236] #19801
- Update body related options in ClientRequest [SPR-15234] #19799
- Improve adding defaults to WebClient requests [SPR-15208] #19772
- Create reactive HiddenHttpMethodFilter to support alternate mappings [SPR-15206] #19770
- Option to get the remote ip from a ServerWebExchange [SPR-15200] #19764
- RedirectAttributes Flash scoped variables absent when redirecting using ResponseEntity [SPR-15176] #19742
- AbstractValueAdaptingCache#toStoreValue should throw an exception if the value is null and allowNulls is false [SPR-15173] #19739
- Improve initialization of org.springframework.tests.Assume [SPR-15163] #19729
- Add Kotlin idiomatic extensions for JDBC API [SPR-15158] #19724
- Support DataBuffer as reactive handler method results [SPR-15148] #19714
- Functional Web API support for HTML form processing [SPR-15144] #19710
- Provide a method that exposes whether or not a reactive HTTP response has been committed [SPR-15135] #19701
- Assign a default order to ResponseStatusExceptionHandler bean created by WebReactiveConfigurationSupport [SPR-15134] #19700
- Support UNSUBSCRIBE for a durable STOMP subscription [SPR-15131] #19697
- Add bodyToMono() and bodyToFlux() Kotlin extensions [SPR-15128] #19695
- Support Gradle-style API for Kotlin bean registration [SPR-15126] #19693
- Provide convenient ways to specify query parameters to WebClient [SPR-15124] #19691
- Add Kotlin array-like addAttribute to Model and ModelMap [SPR-15119] #19686
- Avoid the need to specify Supplier in Kotlin bean registration API [SPR-15118] #19685
- Add new media types for RFC 7807: Problem Details for HTTP APIs [SPR-15110] #19677
- Add support for JSON Streaming [SPR-15104] #19671
- Upgrade to Kotlin 1.1-beta [SPR-15100] #19667
- Possible performance issue in the generation of JSON in Spring Web Reactive [SPR-15095] #19662
- WebFilter ordering in WebHttpHandlerBuilder only works on instances [SPR-15074] #19640
- Provide a Kotlin DSL for the functional Web API [SPR-15065] #19631
- Support i18n and nested template loading in ScriptTemplateView render function [SPR-15064] #19630
- Add a Reactive ScriptTemplateView [SPR-15063] #19629
- Simplify options for strict encoding of URI variable when using UriComponentsBuilder [SPR-14970] #19536
- Improve nested routes API [SPR-14954] #19521
- Disable streaming when reading to Resources in RestTemplate [SPR-14882] #19448
- Reactive MockMvc equivalent [SPR-14590] #19159
- HTTP request pattern matching refinements [SPR-14544] #19112
- Support for MockPart in Spring MVC Test [SPR-14253] #18826
- Introduce MockPart in spring-test [SPR-14252] #18825
- Wildcard mapping for path segments at the end of a
@RequestMapping
[SPR-14193] #18766 - Provide MockMvc support for Stateful HttpSession [SPR-13820] #18393
- Support for Servlet 4.0 API [SPR-12674] #17273
- StandardServletMultipartResolver should support MaxUploadSizeExceededException against common servers [SPR-9294] #13932
- Rollback of transaction participating in nested transaction should not enforce rollback of global transaction [SPR-6568] #11234
🪲 Bug Fixes
- PathPatternParser matches root path against path variable [SPR-15264] #19829
- StringIndexOutOfBoundsException in PathPattern.extractPathWithinPattern [SPR-15259] #19824
- PathPatternParser#parse method failed with java.lang.IndexOutOfBoundsException [SPR-15246] #19811
- RestTemplate drops trailing / from request URI [SPR-15201] #19765
- XmlExpectationsHelper.assertXmlEqual missing "regardless of order" case [SPR-15156] #19722
@RequestParam
injects a raw undecoded string for reactive HTTP requests [SPR-15140] #19706- Reactive RedirectView throws exception if no RequestDataValueProcessor is present [SPR-15136] #19702
- Fix error handling in Jackson2JsonDecoder [SPR-15112] #19679
- Wrong path to RequestUpgradeStrategies in HandshakeWebSocketService [SPR-15089] #19655
- HttpHeaders.keySet() is no longer case-insensitive [SPR-15087] #19653
- UriComponentBuilder doesn't work with encoded HTTP URL having '+'. [SPR-14828] #19394