⭐ New Features
- BlockHoundIntegration for spring-core #24581
- Configure quiet period for shutting down Netty resources #24538
- Consistent ROLE_INFRASTRUCTURE declarations for internal configuration classes #24509
- Raise log level for exceptions from EntityManager close call #24501
- ExecutorConfigurationSupport to allow millisecond precision for await termination period #24496
- Improve assertion message in PersistenceExceptionTranslationInterceptor #24484
- BigDecimal in multi-value request body deserializes differently than single-value #24479
- If controller method has produces="/" in 5.2.3 response is 500 instead of 406 #24466
- SseEmitter cannot format text/plain if StringHttpMessageConverter is not configured #24465
- Support command line arguments with an empty value #24464
- AbstractJackson2HttpMessageConverter + Jackson 2.10: handle ValueInstantiationException properly #24455
- Compatibility with JDK 14 #24453
- Avoid opaque to hierarchical reset in UriComponentsBuilder when input is null #24444
- Add Informix to supported database products for procedure calls #24443
- Solve ReflectPermission issue in sandbox security policy model for repackaged CGLIB ReflectUtils #24420
- Allow non-standard HttpStatus in reactive ServerHttpResponse #24400
- Allow customizing default Smile codec via CodecConfigurer #24382
- Simplify getCache() method in CaffeineCacheManager #24376
- Expose property for handling of Ping frames with Reactor Netty WebSocket client and server #24367
- Simplify getParsedSql() method in NamedParameterJdbcTemplate #24358
- Provide control over formatting of request in HttpWebHandlerAdapter #24352
- Add hook-point to exclude imported configuration classes #24175
- Jackson2Decoder fails to determine correct target type from default interface method with a generic type #23791
- Extra empty line a["\n"] messages from ActiveMQ STOMP broker #23713
- Add a way to combine more than one AnnotationIntrospector in Jackson2ObjectMapperBuilder instead of overriding it #22830
- Add unique number to WebFlux log prefix for Reactor Netty server #22039
🪲 Bug Fixes
- NullPointerException in MockHttpServletRequestBuilder for URI string with no protocol #24556
- BeanPostProcessorChecker warning due to missing infrastructure role on ProxyTransactionManagementConfiguration #24508
- spring-aspects has a compile dependency on spring-orm #24491
- AbstractJackson2Decoder is not aware of jackson's non-blocking parser only supporting UTF-8 #24489
- MockRestServiceServer reset does not clear failedRequests #24486
- Prevent unnecessary refresh for InjectionMetadata.EMPTY #24485
- "Status and headers already sent" ISE exception from Reactor Netty on WebSocket upgrade #24475
- The new Encoder.encodeValue and Decoder.decode methods in spring 5.2 do not provide access to the Context #24441
- Cycle in LogAdapter.Log4jLog initialization within log appender #24440
- Negative byte values not properly converted to unsigned int in URI encoding #24413
- ServerSentEventHttpMessageReader maps null when event has comment only. #24389
- Nested annotations no longer supported in ASM-based annotation processing #24375
- Explicit Content-Type Header in WebClient is overwritten by ResourceHttpMessageWriter #24366
- Avoid setting special Content-* response headers in TomcatHeadersAdapter #24361
- IncompatibleClassChangeError encountered on execution of compiled SPEL expressions #24357
- JSON decoding error parsing stream encoded with Jackson Smile #24198
📔 Documentation
- Improve documentation for
@Autowired
/@Value
in@Configuration
classes #24585 - Fix formatting in webflux-webclient.adoc #24578
- Clarify AbstractResourceBasedMessageSource.setCacheMillis vs java.util.ResourceBundle #24563
- Correct Ant-style Patterns example in documentation #24552
- Fix javadoc in DependencyDescriptor #24551
- Correct formatting of MessageSource example in documentation #24531
- Update advice on RestTemplate #24503
- Upgrade to Spring Asciidoctor Extensions 0.4.0.RELEASE #24481
- Fix typo in StringUtils class #24471
- Polish documentation format #24460
- Fix Asciidoctor Warnings #24427
- Reconsider recommended connection pools #24405
- Improve default experience of data binding from HTML date and time input fields #24370
- Document supported characters for identifiers in SpEL expressions #24359
- Document that
@Validated
results in the use of a proxy and warn users about the side-effects #24338 - Deprecate use of path extensions in request mapping and content negotiation #24179
🔨 Dependency Upgrades
- Upgrade to RSocket 1.0.0-RC6 #24482
- Upgrade to ASM 7.3 #24438
- Upgrade to Reactor Dysprosium SR5 #24355
- Upgrade to JUnit Jupiter 5.6 #24299
❤️ Contributors
We'd like to thank all the contributors who worked on this release!