⭐ New Features
- Defer creating logger in StandardWebSocketHandlerAdapter #25427
- MutablePropertySources will not find or remove proxied sources #25369
- Profiles should be comparable when created via Profiles.of() #25340
- Avoid re-creating RSocketRequester instance per subscriber #25330
- Hoist Class.getName() from String concatenation to dodge an issue related to profile pollution #25324
- Improve Random seed in SocketUtils #25321
- Support fragments in UriComponentsBuilder.fromHttpUrl() #25300
- Support for custom cache registration in CaffeineCacheManager #25230
- Don't get ContentCachingResponseWrapper in ShallowEtagHeaderFilter so that users can extend this wrapper #24976
- Unnecessarily alarming stack trace logged during scheduler resolution #23268
- Expose a setExceptionListener method in DefaultJmsListenerContainerFactory [SPR-17570] #22102
🪲 Bug fixes
- UriComponentsBuilder.cloneBuilder() cause sharing query parameters between builders #25423
- SimpleJdbcCall does not find stored function with PostgreSQL driver 42.2.11 #25399
- MappingJackson2HttpMessageConverter might be too specific in its Charset support #25322
- ReactorNetty websocket issue for multiple clients with different protocols #25315
- Mutating a ServerHttpRequest breaks the existing context path #25279
- ServerHttpRequest.getSslInfo() always returns null for reactor-netty HTTP/2 requests #25278
- NoRollbackFor rule causes TransactionAspectSupport to log unwarranted "exception overridden" error on WebSphere #25253
- AbstractJackson2HttpMessageConverter - Check for encoding breaks JSON to POJO de-serialization experience #25247
- The AbstractTemplateViewResolver class is not abstract #25240
- WebClient: NPE and leak in case connection is reset by server. #25216
- Oracle LOB segments holding TEMP space after executing SP using SimpleJdbcCall with SqlParameterSource #22972
- IllegalReferenceCountException happens when the operation was canceled #22594
- DefaultListableBeanFactory.getBean(Class) may throw NoSuchBeanDefinitionException when removeBeanDefinition is being called simultaneously to remove an unrelated bean #22263
📔 Documentation
- Clarify enforceInitMethod/enforceDestroyMethod default values in AbstractBeanDefinition #25402
- Improve JavaDoc for ConfigurableApplicationContext.refresh() #25380
- Fix interface and class names in examples in core-aop doc #25351
- Wording changes #25314
- Fix typo in Java example for handler class #25302
- Improve Javadoc for @value regarding supported expressions #25284
- Fix syntax in validation examples #25251
- Document exception handling limitations in TaskDecorator implementations (specifically for ThreadPoolTaskExecutor#submit) #25231
🔨 Dependency upgrades
❤️ Contributors
We’d like to thank all the contributors who worked on our current release!