⭐ New Features
- Provide hierarchy traversal support for getBeanNamesForAnnotation [SPR-15923] #20477
- Ensure that WebClient disposes the HTTP client connection once the client response is consumed [SPR-15920] #20474
- Introduce header-based WebSessionIdResolver [SPR-15917] #20471
- WebClient - add option to disable chunked transfer [SPR-15914] #20468
- Enable by default HTTP compression support in Reactor WebClient [SPR-15908] #20462
- WebFlux
@MVC
Controllers do not support@SessionAttributes
. (plus SessionStatus) [SPR-15887] #20442 - Provide hook in DefaultWebSessionManager to support creating custom WebSession implementation [SPR-15876] #20431
- Immutable object constructor arguments not considering WebDataBinder's FIELD_MARKER_PREFIX [SPR-15871] #20426
- Add support for Kotlin autowired constructor with optional parameters [SPR-15847] #20402
- BeanDefinitionBuilder method arguments not annotated with
@Nullable
[SPR-15841] #20396 - MockMvc doesn't honor params in RequestMapping when no equal sign [SPR-15831] #20386
- Autowire contract is not honored in cases where FactoryBean or
@Bean
return null [SPR-15829] #20384 - WebClientException should allow access to status code of the response [SPR-15824] #20379
- URI variables with MockRestRequestMatchers's requestTo [SPR-15819] #20374
- Use ParameterizedTypeReference instead of Class in Kotlin extensions [SPR-15818] #20373
- Add ParameterizedTypeReference method variants to ServerRequest/ServerResponse [SPR-15817] #20372
- Avoid requiring it lambda parameter in Kotlin bean DSL [SPR-15815] #20370
- Media type fails to match types with multiple '+' characters [SPR-15795] #20350
- Support range requests for Spring MVC request mapped methods that return a Resource [SPR-15789] #20344
- ExchangeFilterFunctions Explicit Model For Basic Authentication Credentials [SPR-15764] #20319
- BindingResult support for constructor argument mismatch on immutable data object [SPR-15542] #20101
- Leveraging kotlin-reflect to determine interface method parameters [SPR-15541] #20100
- Consistent overriding for all variants of init/destroy method inheritance [SPR-15532] #20091
🪲 Bug Fixes
- spring-framework-bom lists unpublished spring-build-src module [SPR-15932] #20486
- WebFlux incorrectly falls back to application/json for method that produces application/octet-stream and returns ResponseEntity [SPR-15910] #20464
- ExceptionHandlerMethodResolver loses all handler methods [SPR-15907] #20461
- no dependencyManagement in spring-framework-bom [SPR-15890] #20445
- DefaultWebSessionManager requires DefaultWebSession [SPR-15875] #20430
- Fix overridden methods nullability [SPR-15869] #20424
- Jackson2JsonEncoder and Jackson2JsonDecoder should use provided mime types [SPR-15866] #20421
- Reactive GET request query-params are not decoded correctly. + sign must be space. [SPR-15860] #20415
- Kotlin bean instantiation regression with default declared constructor [SPR-15851] #20406
- FileSystemUtils.deleteRecursively always returns false [SPR-15846] #20401
- FileSystemUtils.copyRecursively no longer replaces existing files [SPR-15845] #20400
- SpringValidatorAdapter fails to retrieve value for Bean Validation 2.0's "" literal [SPR-15839] #20394
- Regression after URI template support added to MockMvcResultMatchers [SPR-15834] #20389
- AnnotationAwareOrderComparator doesn't handle null values anymore [SPR-15823] #20378
- Setting user header on CONNECT message stopped working [SPR-15822] #20377
- [Kotlin] Warning message about private final methods. [SPR-15820] #20375
- AbstractCodecConfigurer creates Jackson Encoders/Decoders each time when getters are called [SPR-15816] #20371
- TemplateAwareExpressionParser.parseExpression does not accept null ParserContext anymore [SPR-15810] #20365
- WebClient.post() not sending complete Flux on Windows [SPR-15790] #20345
- High percent of failures (timeout) under load from server-side WebClient requests [SPR-15584] #20143
📔 Documentation