⭐ New Features
- ForwardedHeaderFilter should support sendRedirect [SPR-15020] #19587
- JdbcTemplate should consistently delegate to getColumnMapRowMapper [SPR-15018] #19585
- LocaleContextHolder default value should be customizable [SPR-15017] #19584
- OkHttpClientHttpRequestFactory should allow POST requests without body [SPR-15015] #19582
- getBeanNamesForType(ResolvableType) doesn't match generic factory method return type for yet-to-be-created bean [SPR-15011] #19578
- Scoped EntityManager bean cannot get unwrapped to Session (with Hibernate 5.2) [SPR-15010] #19577
- Cannot customize autoGrowCollectionLimit on
@InitBinder
method when set custom MessageCodesResolver to Spring MVC [SPR-15009] #19576 - Support for java.util.Optional as a
@RequestBody
[SPR-15007] #19574 - Provide a way to unregister a DataSource in SQLErrorCodesFactory [SPR-15006] #19573
- Spring should tolerate zero-argument constructors with javax.inject.Inject [SPR-15005] #19572
- Add request matchers for query parameters in MockRestRequestMatchers [SPR-14995] #19561
- Update JdbcUtils to improve enum support [SPR-14990] #19556
@GetMapping
method annotation uses consumes attribute from@RequestMapping
class annotation [SPR-14988] #19554- MimeTypeUtils.parseMimeType should ignore an inner ";" inside a quoted value [SPR-14986] #19552
- HttpInvokerClientInterceptor should not wrap client-side Error as RemoteAccessException [SPR-14985] #19551
@DateTimeFormat
(iso = ISO.DATE_TIME) should use optimized formatter for LocalDateTime [SPR-14958] #19525- Shared DefaultConversionService instance e.g. for BeanPropertyRowMapper [SPR-14948] #19515
- Normalize resource URL in ResourceServlet [SPR-14946] #19513
- Include expression string in SpelParseException [SPR-14942] #19509
- Support for Jetty 9.4 (and 9.3.15+) [SPR-14940] #19507
- ResponseEntity builders should allow casting an empty body to any type [SPR-14939] #19506
- Allow PayloadArgumentResolver to only apply to
@Payload
annotated parameters [SPR-14937] #19504 - PathMatchingResourcePatternResolver finds duplicate resources for executable jars but not for executable wars [SPR-14936] #19503
- Implement allocation-friendly method to get user count in SimpUserRegistry [SPR-14930] #19497
- ResourceUrlEncodingFilter, ResourceUrlProvider should correctly resolve hash'ed resource paths [SPR-14928] #19495
- Improve performance for conversions using a method parameter based type descriptor with annotations [SPR-14926] #19493
- DefaultListableBeanFactory.copyConfigurationFrom should provide independent AutowireCandidateResolver instance [SPR-14921] #19488
- HtmlUnitRequestBuilder ignores form encoding type [SPR-14916] #19483
- Improve performance of STOMP message header encoding [SPR-14901] #19467
- BeanPropertyRowMapper should be able to convert SQL timestamp to java.time.LocalDate/LocalTime [SPR-14898] #19464
- getBeanDefinitionNames should not leak the frozenBeanDefinitionNames array [SPR-14897] #19463
- Detect invalid configuration for autoGrowCollectionLimit on DataBinder [SPR-14888] #19454
- Use String.intern() for Class reading [SPR-14886] #19452
- Add PATCH HTTP operation to RestTemplate [SPR-14857] #19423
- Spring WebSockets should support token-based authentication [SPR-14690] #19254
- Add RedirectAttributesMethodArgumentResolver to the default argument resolvers in ExceptionHandlerExceptionResolver [SPR-14651] #19217
- CommonsMultipartFile.getOriginalFilename() should be able to preserve header-specified filename as-is [SPR-14613] #19180
🪲 Bug Fixes
- MBeanExporter fails against null beans [SPR-15031] #19598
- Pointcut evaluation fails against AbstractHandlerMethodMapping$MappingRegistry with AspectJ 1.8.10 [SPR-15019] #19586
- Behaviour of field injection for List dependencies that are produced and consumed by the same configuration class has changed in 4.3.5 snapshots [SPR-14996] #19563
- Concurrency problem in DeferredResult: potential double execution of handleResult [SPR-14978] #19544
- ImportAware.setImportMetadata not invoked if import inherited from superclass with negative condition [SPR-14972] #19538
- List-to-String conversion exception does not refer to element type [SPR-14971] #19537
- Self reference fallback in 4.3 is not meant to apply to collection elements [SPR-14965] #19532
- PathMatchingResourcePatternResolver provides duplicate resources with relative URL [SPR-14934] #19501
- NPE in LoadTimeWeavingConfiguration: loadTimeWeaver() called too early [SPR-14931] #19498
- ConversionService performance regression [SPR-14929] #19496
- AbstractSockJsSession deadlock when tomcat WsSession is closing [SPR-14917] #19484
- ExceptionHandlerExceptionResolver should not log propagated exceptions at warn level [SPR-14907] #19473
- sse breaks with indenting serializer [SPR-14899] #19465
- Content-based versions are not inserted into resource URLs in an error page [SPR-14891] #19457
- Netty4ClientHttpRequestFactory should use SSL if port is 443 or scheme is https [SPR-14889] #19455
- RestTemplate POST and PUT don't work with Netty4ClientHttpRequestFactory [SPR-14860] #19426
📔 Documentation
- SpEL and Date Literals [SPR-14987] #19553