⭐ New Features
- Configure CommonsMultipartResolver to support specific HTTP methods #27161
- Allow BeanDefinitionBuilder to set an instance supplier with a ResolvableType #27160
- Reason of
@ResponseStatus
on handler method is not resolved by MessageSource #27156 - ResourceHandlerRegistry#getHandlerMapping should initialize handler once in outer loop #27153
- Set synthetic flag using BeanDefinitionBuilder #27141
- BeanCreationException error message should always include declaring class of constructor (or factory method) #27139
- Improve Jetty 10 check in JettyClientHttpResponse #27136
- Jetty10RequestUpgradeStrategy use an old jetty 9 class HandshakeRFC6455 #27121
- ClassNotFoundException using Jetty 10 and its reactive client #27112
- Use StringBuilder.append(char) where possible #27098
- Consider "wss" and "https" for secure flag in Forwarded header checks #27097
- SynchronossPartHttpMessageReader should only create temp directory when needed #27092
- Implement equals, hashCode, & toString in BeanMethod and *Metadata types #27076
- Remove logging dependency in BeanUtils #27070
- Exclude sealed interfaces from auto-proxying (for JDK 17 compatibility) #27027
- Blockhound error when running with transaction with a TransactionOperator #26955
- Configure StandardServletMultipartResolver to only support multipart/form-data #26826
- Add a way to set executeExistingDelayedTasksAfterShutdown from ThreadPoolTaskScheduler #26719
- Apply dynamic changes in ThreadPoolTaskExecutor before setting local value #26700
🪲 Bug Fixes
- JettyHttpHandlerAdapter is not aware of Server[Request|Response]Wrapper #27146
- {*path} pattern (CaptureTheRestPathElement) includes undocumented leading slash in
@PathVariable
path #27132 - NoSuchMethodError when invoke JettyWebSocketSession.getRemoteAddress in jetty 10 #27120
- CronExpression is still broken on spring-context-5.3.8 #27117
- SimpleMethodMetadataReadingVisitor.Source.toString() omits separator for method arguments #27095
- DefaultPathSegment allows shared empty parameters map to be mutated #27064
- AOP auto-proxying with proxyTargetClass=true and introduction advice does not work for JDK proxy targets #27044
- ServletRequestDataBinder assumes Standard servlet multipart handling #26999
- DataClassRowMapper should not override Kotlin init properties #26569
📔 Documentation
- Add Javadoc
@since
toBeanDefinitionBuilder.setSynthetic()
#27155 - Fix link to Javadoc API #27151
- Added description for HandlerInterceptor #27122
- Fix typo in core-beans.adoc #27113
- Fix typo in BeanDefinitionDsl.kt #27105
- Improve docs for getContentAsByteArray method of ContentCachingRequestWrapper #27068
- Fix explanation on default settings for content negotiation in reference doc #27067
- Document that any
@Valid*
annotation triggers validation in the reference manual #27050 - Improve RequestPartMethodArgumentResolver Javadoc #27043
- Improve RequestResponseBodyMethodProcessor Javadoc #27042
- Clarify that baseName in ResourceBundleMessageSource does not support multiple locations #27038
- Link alternate documentation formats #27015
🔨 Dependency Upgrades
- Compatibility with HtmlUnit 2.51 #27147
- Upgrade to ASM 9.2 (for early Java 18 support) #27069
- Upgrade to Kotlin 1.5.21 #27110
- Upgrade to Kotlin Coroutines 1.5.1 #27157
- Upgrade to Mockk 1.11.0 #27109
- Upgrade to Reactor 2020.0.9 #27158
❤️ Contributors
We'd like to thank all the contributors who worked on this release!