⭐ New Features
- Performance enhancement in execution of ResponseEntity.of() #25197
- Support for shared GroovyClassLoader in GroovyScriptFactory #25181
- Make use of custom types configurable in YamlProcessor #25154
- Missing null checks in AbstractMessageChannel.addInterceptor #25089
- Avoid full synchronization in AbstractRefreshableApplicationContext.getBeanFactory() since it can lead to massive thread blocking #25083
- Fix concurrency issues in XStreamMarshaller #25026
- Avoid logging exception for closed session in AbstractSockJsSession #25003
🪲 Bug Fixes
- AbstractJackson2HttpMessageConverter does not respect character encoding in canRead/canWrite #25185
- ExchangeStrategies custom codec's reader & writer are not registered #25150
- MultiValueMapAdapter.getFirst fails with IndexOutOfBoundsException in case of empty List #25141
- WebSphereUowTransactionManager causes exception for PROPAGATION_SUPPORTS when timeout is specified #25135
- Avoid ClassCastException on IllegalArgumentException when invoking sync get cache method #25118
- DefaultServerRequestBuilder does not respect attributes when building the ServerRequest #25107
- Fix race condition in WriteResultPublisher between subscription and error in publishError #25102
- HttpHeaders equals may return false without comparing actual content #25035
- Fix race condition in WriteResultPublisher between subscription and completion in publishComplete #25004
🔨 Dependency Upgrades
- Upgrade to Reactor Californium-SR19 #25211