⭐ New Features
- Implement
toString()
inTestBeanOverrideHandler
#34072 - Log alias removal in
DefaultListableBeanFactory
#34070 - Log warning when one Bean Override overrides another Bean Override #34056
- Introduce "unsafeAllocated" flag in TypeHint #34055
- Cannot assert status reason phrase with MockMvcTester #34016
- Improve toString for reactive ScheduledTask #34010
- Optimize sending requests without a body in RestClient and WebClient with Reactor Netty #34003
- Add missing
@Contract
annotation toObjectUtils#isEmpty
#33984 - OptionalValidatorFactoryBean suppresses Hibernate Validator configuration failures too much #33979
- Support
Flux<ServerSentEvent<Fragment>>
in WebFlux #33975 - Update in FragmentsRendering to names of static methods #33974
- Honor
@Fallback
semantics for Test Bean Overrides #33924 AdvisedSupport.MethodCacheKey
should check for logical equality as well as identity #33915- Fail with full description for XML diff in
XmlExpectationsHelper
#33827 MapMethodProcessor
should only resolve arguments of type Map or the ModelMap hierarchy #33160
🐞 Bug Fixes
- Support binding from request headers via constructor args #34073
- Unable to configure custom scheduler for
@Scheduled
annotation #34058 - Identical Bean Overrides are silently allowed #34054
- OOM due to NoTransactionInContextException in reactive pipeline #34048
- Priority header causes binding exception after upgrade to Spring Framework 6.2.0 #34039
@MockitoBean
incorrectly injects supertype into subtype field #34025- NestedPlaceholder are not recursively resolved if the fallback is a placeholder #34020
- AOT no longer generates BeanInstanceSupplier signature for a CGLIB proxy with its public type #33998
- Nested transaction support via savepoints is broken in Oracle database #33987
- Proxy created with
IntroductionInterceptor
but withouttarget
always throws an exception #33985 ApplicationListener
no longer invoked for genericApplicationEvent
with 6.2.0 #33982- Error handling override in DefaultResponseErrorHandler ignored after upgrade to 6.2.0 #33980
- BeanCurrentlyInCreationException is thrown when multiple threads simultaneously try to create a FactoryBean #33972
- HandshakeWebSocketService assumes jakarta websocket is present #33970
@Value
cases SpringCGLIB$$0 required a bean of type java.lang.String that could not be found in Native compile when migrating to SB 3.4 #33960- PathMatchingResourcePatternResolver should not log directory-skip messages at info level #33956
- Avoid infinite recursion in BeanValidationBeanRegistrationAotProcessor with recursive generics #33950
- Skip runtime hint registration for validation constraint with missing dependencies #33949
- Move Kotlin value class unboxing to
InvocableHandlerMethod
#33943 MockReset
strategy is no longer honored for@MockitoBean
and@MockitoSpyBean
#33941TypeDescriptor
with recursive generics triggers infinite recursion inResolvableType.equals/hashCode
#33932- RestClient does not expose full URI template as attribute #33928
- Bean Overrides like
@MockitoBean
and@TestBean
should not be allowed onstatic
fields #33922 - Regression in duplicate beans with different method names #33920
📔 Documentation
- Fix link to MockMvcBuilders in reference documentation #34031
- Fix a typo in the filters documentation #33959
- Document visibility requirements for Bean Overrides #33923
- Fix typos and link in Observability documentation #33910
- SpEL documentation contains syntax errors #33907
- Improve explanation of AOP advice classes that should implement
MethodInterceptor
#33901 - Reflect well-known HttpHeaders intent in Javadoc #33886
- Reflect well-known MediaTypes intent in Javadoc #33754
- Document support for varargs invocations in SpEL #33332
🔨 Dependency Upgrades
❤️ Contributors
Thank you to all the contributors who worked on this release:
@Boiarshinov, @CHOICORE, @KNU-K, @izeye, @ngocnhan-tran1996, @scordio, @sonallux, and @youabledev