⭐ New Features
- Backport PR #22485 (Exclude jdk package in ShadowingClassLoader) to 5.1 branch #23641
- SimpleCacheManager should not synchronize on AbstractCacheManager#cacheMap #23635
- MockClientHttpResponse loses original HttpStatus code #23599
- BeanUtils.isSimpleValueType() should not consider void or Void as a simple value type #23573
- ClassUtils.isPrimitiveOrWrapper(…) and friends should consider Void.class a primitive wrapper for void.class #23572
- Custom DefaultResourceLoader subclass should be able to consume context-provided ProtocolResolvers #23564
- sendBufferSizeLimit exceeded should be logged at warn level #23534
- Provide a method to get the original bean name from a scoped target's bean name #23514
- Raise 400 instead of 500 on failure to find index of lookupPath within requestUri in ResourceUrlEncodingFilter #23508
- IncompatibleClassChangeError on Jetty WebSocket ExtensionFactory #23500
- Respect already set
content-length
header for HEAD request. #23484 - Static resource support does not handle requests for a file with % character in its name #23463
- Errors.NativeIoException from WebClient on WebFlux server does not set the response status #23319
🪲 Bug Fixes
- SameSite cookie attribute missing when using WebFlux #23693
- Ensure ClassFilter and MethodMatcher implementations are cacheable #23659
- LinkedCaseInsensitiveMap does not track removals via keySet, entrySet, or values #23644
- Wait for complete disposal of Reactor Netty resources in ReactorResourceFactory #23631
- Spring fails to determine that XML is DTD-based if DTD declaration is followed by a comment #23605
- ClassCastException when use ServerHttpResponseDecorator to modify response of websocket #23598
- Infinite loop due to doFilterNestedErrorDispatch() method in OncePerRequestFilter #23596
- Bean definition override leads to NPE due to inconsistent equality check #23593
- Fix DefaultListableBeanFactory#copyConfigurationFrom #23569
- Response with an invalid content type hangs when using WebFlux with Jetty #23553
- Entry set of read-only HttpHeaders loses original headers' ordering #23551
- DefaultListableBeanFactory throws a NullPointerException when resetBeanDefinition() is invoked concurrently #23542
- No way to replace Set-Cookie header via MockHttpServletResponse #23512
- ConcurrentModificationException in MockHttpServletResponse #23460
- Synchronized blocks in MethodOverrides are hurting concurrency #23448
- AnnotationAttributes#assertNotException should check for instance of Throwable #23424
- Reactive JettyRequestUpgradeStrategy returns 'No WebSocketServerFactory available' on startup with simultaneous handshakes #23313
- WebFlux with Tomcat, intermittent timeout when creating response #23096
📔 Documentation
- Improve docs for AnnotatedBeanDefinitionReader,
@Configuration
, and@ContextConfiguration
regarding "annotated classes" #23638
🔨 Dependency Upgrades
- Upgrade to Reactor Californium-SR12 #23694
❤️ Contributors
We'd like to thank all the contributors who worked on this release!