⭐ New Features
- ArithmeticException: long overflow on
@Scheduled
(fixedDelay = Long.MAX_VALUE, timeUnit = TimeUnit.MINUTES) #31210 - Polish resolveArgument method in RequestResponseBodyMethodProcessor #31175
- Update logging level in BeanValidationBeanRegistrationAotProcessor for validation exceptions #31147
- Skip searching of nonexistent directory in
PathMatchingResourcePatternResolver
#31111 - Add
@Nullable
toargValue
indoSetValue()
inArgument[Type]PreparedStatementSetter
#31086 - Optimize whitespace checks in
StringUtils
#31067 - Missing proxy hint when using a simple JPARepository #31050
- Register an override for an existing adapter in
ReactiveAdapterRegistry
#31047 DefaultListableBeanFactory#getBeanNamesForType
does not take target type into account forFactoryBean
resolution #30987- Give
spring-core
access toorg.jboss.vfs
forVfsUtils
support on WildFly #30973 - Use
readNBytes
inStringHttpMessageConverter
whencontentLength
is available #30942 - Skip array sort when the length of array not greater than 1 #30934
- Avoid flushing for each SseEventBuilder entry #30912
- Make
DefaultGenerationContext(DefaultGenerationContext, String)
constructorprotected
#30895 - Add missing
@Nullable
annotations inAbstractResourceResolver
subclasses in Spring MVC #30893 - Performance bottlenecks while creating scoped bean instances #30883
- Make bean initialization deterministic for multiple
@Autowired
methods on same bean class #30359 - Optimize
ClassUtils#getMostSpecificMethod
#30272 - Missing native hints for Hibernate Native Query proxy #29603
- Check exception cause for
@PropertySource(ignoreResourceNotFound)
support #22276 - Align validation metadata handling in
PayloadMethodArgumentResolver
#21852
🐞 Bug Fixes
- Spring Boot fails with "does not reside in the file system: manifoldclass://622488023/.../" #31216
WebClientResponseException.getResponseBodyAs
throws exception instead of returningnull
for empty body #31179- Possible classloader leak through incomplete clearing of annotation caches #31170
- Spring
LogFactory
implementation deviates from original ApacheLogFactory
in terms of abstract method declarations #31166 - graalvm native image feature PreComputeFieldFeature disable all netty native transports #31141
- Bean injection fails due to
nullSafeConciseToString()
invokingisEmpty()
on aMap
/Collection
proxy #31138 - R2DBC: Skip release connection after nested with existing transaction #31133
- SpelExpressionParser throws IllegalStateException instead of ParseException for invalid expression #31097
@DynamicPropertySource
in@Nested
test class cannot override dynamic properties from enclosing class #31083- Spring Boot WebFlux validation of invalid inputs #31045
TransactionalApplicationListenerMethodAdapter
should find@TransactionalEventListener
on target class method #31034- ScheduledAnnotationBeanPostProcessor: graceful shutdown should not interrupt currently running jobs #31019
- TypeBootstrapContext constructor not called in custom types with Hibernate 6 #30924
MethodIntrospector.selectMethods(?)
fails to find methods in case of special bridge method arrangement #30906- Spring webflux
@ModelAttribute
annotated methods not working with kotlin suspend methods #30894 - Support Kotlin Serialization custom serializers #30870
- Test AOT processing fails if a feature name prefix is reused #30861
- NoUniqueBeanDefinitionException should make sure beansNameFound is serializable #29753
- Permgen memory leak due to
ClassInfo
caching injava.beans.Introspector
on JDK 11/17 #27781 - Model.set() Kotlin extension method does not allow null value #27115
- Allow
PropertySourcesPlaceholderConfigurer
subclass to customizePropertyResolver
#26761
📔 Documentation
- Fix documentation: Passing in Lists of Values for IN Clause does not work with JdbcTemplate #31228
- Fix typo in comment in XML configuration example #31194
- Document some non-nullable Kotlin extensions can throw
NoSuchElementException
#31189 - Improve documentation on applicability of mapped interceptors with the Spring MVC config #31185
- Add Javadoc since tags in FilePatternResourceHintsRegistrar #31174
- Refine CORS documentation for wildcard processing #31143
- Fix invalid type name in RSocket section of the reference documentation #31091
@Transactional
on package-private/protected methods for class-based proxies #31057- Change Kotlin
Any
to be a nullable type in AOP refdoc examples #31015 - Versioned redirect seems to all redirect to "current" version #31009
- Javadoc for
PathPatternParser.defaultInstance
is outdated #30976 - Clarify R2DBC
ConnectionAccessor
andDatabasePopulator
exception declarations #30932 - Document purpose of
name
attribute in@PropertySource
#30195 - Document how to configure the
ApplicationEventMulticaster
used by theApplicationContext
#29996 - Document inference of destroy methods with Java config more prominently #29546
- Revise
FilePatternResourceHintsRegistrar
API and improve documentation #29161 - Document how to configure the cache infrastructure globally #28250
- SpEL
T()
operator not able to locate user types with defaultStandardTypeLocator
configuration #26253 - Propagation REQUIRES_NEW may cause connection pool deadlock #26250
- Modify DefaultMessageListenerContainer javadoc #25503
- Doc: Avoid deadlock in
@PostConstruct
throughSmartInitializingSingleton
orContextRefreshedEvent
#25074 - Document expected behavior of a method annotated with multiple
@Scheduled
annotations #23959 - Improve documentation for FactoryBean's getObject automatic call through
@ManagedResource
[SPR-17139] #21676 - Injecting EntityManagers through constructor injection (and at non-
@PersistenceContext
injection points in general) [SPR-10443] #15076
🔨 Dependency Upgrades
- Upgrade to Context Propagation 1.0.5 #31223
- Upgrade to Micrometer 1.10.11 #31221
- Upgrade to Reactor 2022.0.11 #31222
❤️ Contributors
Thank you to all the contributors who worked on this release:
@1zg12, @aahlenst, @christophejan, @gnagy, @izeye, @jongwooo, @kilink, @marschall, @michaldo, @perlun, @pstrsr, @quaff, @remeio, @rwinch, @shin-mallang, and @zakaria-shahen