⭐ New Features
- Enforce standard Java types in YamlProcessor #26530
- Fall back on awaitToBodylessEntity when awaitBody is used with Unit #26504
- Expose HttpHandler Decoration as a bean #26502
- Inefficient reflection operations for destroy method determination #26498
- Missing CORS Headers for Static Resources in WebFlux #26495
- Ignore null Locale in MockHttpServletResponse #26493
- Ignore null header value in MockHttpServletResponse #26488
- Add application/vnd.google.protobuf to ProtobufCodecSupport #26487
- Expose ChannelId in ReactorNettyWebsocketSession #26485
- Exclude User Destination Messages in Broker Message Handler #26474
- UriComponentsBuilder '{' '}' may not be encoded although invalid characters #26466
- Support BASE64 file name encoding in ContentDisposition #26463
- Allow AbstractEnvironment subclasses to use custom ConfigurablePropertyResolver and MutablePropertySources #26462
- Allow AbstractEnvironment to bypass active/default properties #26461
- No way to affect response when unhandled exceptions thrown from ForwardedHeaderTransformer #26459
- Support for servletPath prefix with PathPatternParser in Spring MVC #26445
- Add unique number to WebFlux log prefix for Undertow server #26430
- Provide a way to modify RequestMappingInfo conditions #26428
- Provide better lifecyle for WebMvcConfigurer.configurePathMatch #26427
- Fail early FactoryBean instantiation for LinkageError #26425
- Unwrap DataSource hidden behind InfrastructureProxy in SqlScriptsTestExecutionListener #26422
- Close mapping streams after the ValidatorFactory has been built in LocalValidatorFactoryBean #26418
- Introduce public defineClass variant for SmartClassLoader implementations #26403
- Return 415 for form data via
@RequestBody
in WebFlux #26386 - Make set operator for MapSqlParameterSource accept nullable value #26288
- Provide API to Expose the Handling of PreFlight Requests in WebFlux #26257
- Configure the ObjectMappers to Use for a Class by MediaType #26212
- Jetty 10 Support #26123
- Introduce a NativeDetector utility class #25795
- Add overload for MockRestServiceServer.verify with a timeout #22618
🪲 Bug Fixes
- IllegalArgumentException due to lack of a cached lookupPath #26546
- BeanUtils does not copy properties with generics from a Proxy since 5.3.0 #26531
- Autowiring shortcut fails with NoSuchBeanDefinitionException after removeBeanDefinition call #26517
- MockPart in request is not recieved in RequestPart in controller #26501
- CORS Headers Added to Pre-Flight Request on Ambiguous Match Even Without
@CrossOrigin
#26490 - SimpleJdbcInsert (sporadically) does not insert all columns #26486
- Avoid unnecessary wrapping for SqlParameterValue #26471
- DefaultHandlerExceptionResolver handling of media type exception on Tomcat 7+ #26470
- Websocket extensions not working #26449
- AbstractBeanDefinition#equals handles propertyValues incorrectly #26433
- WebMvcConfigurationSupport.beanNameHandlerMapping does not set PathPatternParser #26414
- Simple URL Mapping not working with PathPatternParser when Servlet context path is used #26411
- BodyInserters.fromMultipartData swallows content type in certain cases #26410
- MockPart is not added to parameter list anymore for Content-Type application/json #26400
- CronExpression skips a temporal when last day of the month and
*
expression is used #26390 - Malformed Content-Type Header in Response #26315
📔 Documentation
- Update ref docs for nested class names #26540
- RSocket support not linked from user guide index #26534
- Document the "SpringProperties mechanism" mentioned in the testing chapter #26492
- Document UriComponentsBuilder.pathSegment doesn't allow segments "without text" #26457
- UriComponentsBuilder documentation error for HTTP request encoding #26453
- Improve reference documentation on Resources #26447
- Update documentation with details on content negotiation and the order of converter registrations #26388
- Wrong documentation for CachePut #26186
- Document choices for async ResponseEntity return values #22614
🔨 Dependency Upgrades
- Update Gradle Enterprise Plugin versions #26374
- Upgrade to JUnit 4.13.2 #26543
- Upgrade to JUnit 5.7.1 #26510
- Upgrade to Kotlin 1.4.30 #26545
- Upgrade to Reactor 2020.0.4 #26548
❤️ Contributors
We'd like to thank all the contributors who worked on this release!