⭐ New Features
- Reduce
WARN
level log output during test AOT processing #30867 - Avoid need for reflection hints for
MBeanExporter
in native image #30846 - Tolerate
AnnotationUtils.isCandidateClass
call withnull
as annotation type #30842 - Simplify
DefaultSingletonBeanRegistry.isDependent()
#30839 - Add missing
@Nullable
annotations in ContentDisposition.Builder #30820 - Provide explicit support for collections, maps, and arrays in
ObjectUtils.nullSafeConciseToString()
#30810 - Extend list of supported types in
ObjectUtils.nullSafeConciseToString()
#30805 - Align ConcurrentMapCacheManager locking behavior with CaffeineCacheManager #30780
- Improve logging for missing dependencies in
MicrometerObservationRegistryTestExecutionListener
#30747 - Optimize
KotlinReflectionParameterNameDiscoverer
#30725 - Change
InvocableHandlerMethod#invokeSuspendingFunction
return type toObject
#30716 ResolvableType.hasUnresolvableGenerics()
should cache its result #30713- Deprecate RootBeanDefinition(ResolvableType) constructor #30704
- Reinstate dependency injection support for legacy JSR-250
@javax.annotation.Resource
annotation #30695 - Translate SQL Exception with State S0001 and Vendor Code 2628 to a Spring Exception in MSSQL 2019 #30681
- Ensure Spring
LogFactory
contains all public methods from ApacheLogFactory
#30668 - Infer hints required for aspects #28711
- Improve diagnostics for CGLIB ClassLoader issues with shared classes in parent ClassLoader #25940
JdbcTemplate
does not callhandleWarnings
in case of exception #23106- Avoid illegal reflective access in ContextOverridingClassLoader.isEligibleForOverriding #22791
🐞 Bug Fixes
- Revert changes to
toString()
inFieldError
#30799 - For a prototype bean, if first-time rejected value is null, subsequent value will wrongly be null always #30794
- Fix log level on error with
@TransactionalEventListener
#30776 - ClassCastException in
AbstractBeanDefinition.getBeanClassName()
when getting bean multithreaded #30773 - SerializableTypeWrapper does not consistently catch InvocationTargetException #30764
- NPE in MvcUriComponentsBuilder with no-arg target method on interface #30756
- ArithmeticException: long overflow on
@Scheduled
(fixedDelay = Long.MAX_VALUE) #30754 Jackson2ObjectMapperBuilder
breaks whenmodules
customizer followsmodulesToInstall
#30751NullPointerException
in reactiveTransactionalOperatorImpl
#30729MicrometerObservationRegistryTestExecutionListener
uses wrongClassLoader
to detect dependencies #30726- Support [package-]private init/destroy methods in AOT mode #30724
- Package-private init/destroy methods are not always invoked #30718
- Generic RedisKeyExpiredEvent not delivered to
@EventListener
anymore in 6.0.9 #30712 - Explicit BeanDefinition#targetType is not honoured in AOT scenarios #30689
- Spring ORM SpringBeanContainer when trying to create a bean fails with not found bean definition, and fallbacks to default hibernate bean creation #30683
- PathResourceResolver#resolve*Internal is missing
@Nullable
declarations #30601 - Code generation should only apply shortcut if the target method is not ambiguous #29278
📔 Documentation
- Update STOMP documentation with the new guidelines #30857
- Clarify
ReactiveTransactionManager
exception declarations #30817 - Doc:
JdbcTransactionManager
vsDataSourceTransactionManager
#30802 - Fix typo in Javadoc for
BeanDefinitionDsl.kt
#30798 - Remove
@Aspect
for classes containing only@Pointcut
declarations in reference documentation #30790 - NestedRuntimeException javadoc not updated after implementation change #30748
AbstractMessageListenerContainer
documentation and code disagree regarding log level #30730- Fix link text from "null" to "Component Classes" in Testing chapter #30714
- Document that
RowCallbackHandler
can be used withNamedParameterJdbcTemplate
#30705 - Javadoc HTML tables are no longer rendered properly since upgrade to Java 17 #30701
- Fix typo in
UriUtils
Javadoc #30598 - Fix example in Javadoc for
MultipartBodyBuilder
#30593 - Elaborate on ShallowEtagHeaderFilter limitations #30517
- Document how to configure a custom LocalContainerEntityManagerFactoryBean to work with native #30498
- Document that
@Sql
requiresspring-jdbc
andspring-tx
on the classpath #30280 - Document limitations of Servlet Filter observations #29398
- Warn against direct usage of Servlet API in WebFlux applications #28872
- ResultSet holdability into the View layer broken by Hibernate 5 #26557
🔨 Dependency Upgrades
- Upgrade to
micrometer-bom
1.10.9 andcontext-propagation
1.0.4 #30860 - Upgrade to me.champeau.jmh 0.7.1 #30690
- Upgrade to Reactor 2022.0.9 #30871
❤️ Contributors
Thank you to all the contributors who worked on this release:
@KSH-code, @antongub, @bnbakp0582, @cwatzl, @heoYH, @izeye, @kilink, @maartenc, @quaff, @rwinch, @valfirst, and @vbaidak