⭐ New Features
- MimeMessageHelper should not encode attachment filenames by default #25770
- A beforeCommit chain failure invariably results in a 500 response #25753
- Improve performance of JdkDynamicAopProxy.getProxy(ClassLoader) #25660
- Add URI variables to request context in AbstractUrlHandlerMapping (reactive) #25648
- Public method in RSocketMessageHandler to register any handler method #25639
- Allow early decoration of request and response in WebFlux #25633
- Spring Test: Methods should allow supertypes of Matcher using lower bounded wildcards #25610
- WebSocket configuration doesn't work properly with the buffer size limitation #25581
- Declare interfaces as
@FunctionalInterface
where feasible #25580 - Call StartupStep.end in finally block #25572
- Support filename hint for client side use of ResourceDecoder #25516
- No way to set timeout for the requests when using Jetty reactive httpclient #25493
- Mime type "application/*" is not compatible with "application/vnd+json" #25350
- Avoid resizing of fixed-size HashMap #25349
- Support RSocket Load Balancing #25333
- WebClient HTTP Request Timeout #25115
- Support a
RowMapper<T>
for Java record classes #24695 - Data binding for Java record classes #24391
- Failure to bind a component of a form backing object using constructor binding causes the object to be null #24372
- Concurrent access to ParsedSql cache in NamedParameterJdbcTemplate #24197
- WebClient: wrap connection exceptions #23842
- Extract MimeTypeUtils.ConcurrentLruCache and make it public #22789
- WebSocket support with
@EnableWebFlux
#22587 - Add kotlinx.serialization JSON support to Spring MVC #21188
- Common API for MockMvc tests and for real HTTP tests #19647
🪲 Bug Fixes
- Upgrading from Boot 2.3.3 or 2.4-M1 to Boot 2.4-M2 uses 125mb heap in BitsCronField #25687
- Copy httpHandlerDecorator in copy constructor for WebHttpHandlerBuilder #25656
- MockMvc does not correctly initialize the request for non-file mock Part uploads #25602
- WebFlux application server add server.forward- Headers - Strategy = Framework RouterFunction endpoint 404 #25270
📔 Documentation
- Fix typo in Regular Expression Pointcuts docs #25767
- Fix typo regarding Ordered interface in core-aop.adoc #25759
- Fix typo in websocket.adoc #25630
- Eliminate unnecessary word in core-bean.adoc that causes repetition #25585
- Publish documentation under reference/html folder #25071
🔨 Dependency Upgrades
- Upgrade to RSocket 1.1 M2 #25729
- Upgrade to Reactor 2020 RC1 #25728
- Upgrade to Kotlin 1.4.0 #25617
- Upgrade to Gradle 6.6 #25578
- Upgrade to JUnit 5.7 #25527
❤️ Contributors
We'd like to thank all the contributors who worked on this release!