⭐ New Features
- Add form fields to MockMvc Kotlin DSL #34412
- Make ProblemDetail implement Serializable #34409
- Support
@MockitoSpyBean
at the type level on test classes #34408 - Expose order values of
TestExecutionListener
implementations as constants #34404 - ContentDisposition should match attributes in a case-insensitive fashion #34383
- Provide access to servletPath in ServletRequestPathUtils #34379
- Use
ConversionService
to convert POJO to array for SpEL varargs invocations #34371 - Provide a more actionable CGLIB error message with native #34370
- Wrap disconnected client exceptions as AsyncRequestNotUsableException in Servlet container onError callback #34363
- Support RFC 8441 WebSocket upgrade with HTTP/2 CONNECT #34362
- Optimize default property editor allocations for bean instance creation #34361
- Continue with pre-instantiation when current bean is in creation already #34349
- Allow filtering bean instances returned by ObjectProvider#stream() #34318
- GenericConversionService finds wrong converter for partially unresolvable generic types #34298
- Avoid re-creating HandlerMethod unless handler is resolved through the BeanFactory #34277
- UrlResource should leniently handle HTTP endpoints which do not support HEAD #34217
- Add API counterpart for handling Fallback and 'defaultCandidate=false' beans #34203
- Add support for multidimensional arrays #34183
- Add getters to ServerResponseResultHandler #34066
- Improve diagnostics when a Bean Override cannot be selected by type #34006
- Expression performance regression due to missing annotation types on context classes #33948
🐞 Bug Fixes
- PathMatchingResourcePatternResolver failing against non-jar file in classpath #34417
- GenericTypeResolver Since 6.2.0, generics cannot be obtained correctly in multi-layer interface inheritance (possible regression of #24963) #34386
- Test Bean Overrides honor fallback qualifier instead of
@Primary
semantics #34374 - HTTP interface client raises IllegalArgumentException if query param name contains a colon #34364
- Quartz-style Nth Day of Week cron expressions can overflow to other month #34360
- Component scan fails to find jar entries in WEB-INF/classes with embedded Tomcat #34348
- Check hasNext when when accessing sessionIds from UserDestinationResult #34333
- Property binding to
Map
that implementsIterable
no longer works #34332 - GenericTypeResolver returns EmptyType #34328
- Duplicate
BeanOverrideHandler
discovered in@Nested
test class hierarchy when upgrading to Spring 6.2.2 #34324 AnnotationBeanNameGenerator
issues warning about explicitly aliasedvalue
attribute #34317- Stop assuming that AspectJ Advice has JoinPoint as the first argument #34316
- Constructor binding fails for simple types List/Map/Array and for nested container combinations #34305
- Change in BeanFactoryUtils.beanNamesForTypeIncludingAncestors() Behavior in Spring Framework 6.2.x causing ClassCastExceptions #34300
- Data binding does not filter HTTP headers for constructor binding #34292
- Escaped character in nested placeholder not detected properly and leads to invalid parts #34289
- ReflectJvmMapping.getKotlinFunction returns null for Kotlin properties #34284
ConfigurationClassEnhancer
should explicitly set customClassLoader
on CGLIBEnhancer
(aligned withCglibAopProxy
) #34274- Connection reset exception from RestTemplate call in Spring Web MVC controller is ignored #34264
- AsyncExecution fails to detect the return type of an annotated method from an interface with a generic #33957
- Ensure Locale context is available for WebFlux method validation #33810
📔 Documentation
- Fix reference to ApplicationContext#getAutowireCapableBeanFactory in reference documentation #34400
- Clarify component scanning of abstract classes with
@Lookup
methods #34367 - Minor update in WebSocket STOMP reference documentation #34353
- Clarify documentation on the usage of RestClient in POST scenarios without response body #34334
- Document limitation around the port of localAddress in
StandardWebSocketSession
#34304 - Fix Javadoc for field reflection hints #34297
- Improve Javadoc for
SpringProperties.getFlag()
#34295 - Link to current AspectJ Javadoc #34293
- Update Javadoc for
SimpleCommandLinePropertySource
#34282 - Update RestClientException Javadoc to refer to RestClient #34270
- Document order values for
TestExecutionListener
implementations #34265 - Document custom HttpServiceArgumentResolver usage #34227
🔨 Dependency Upgrades
- Upgrade to Micrometer 1.14.4 #34401
- Upgrade to Reactor 2024.0.3 #34403
- Upgrade to RSocket 1.1.5 #34402
❤️ Contributors
Thank you to all the contributors who worked on this release:
@JoshuaChen, @Puppy4C, @anaconda875, @brandenclark, @canattofilipe, @dobrosi, @izeye, @jazdw, @khoutz182, @kwondh5217, @pirocraft, @quaff, @remeio, and @tarekmues