Releases: spring-projects/spring-framework
v6.1.0-RC2
β New Features
- Support
ContextLoader
config in@SpringJUnitConfig
and@SpringJUnitWebConfig
#31498 TypeDescriptor
andResolvableType
cache inGenericTypeAwarePropertyDescriptor
#31490- Consistent
Class
and array matching inResolvableType.isAssignableFrom
#31487 BeanDefinitionRegistryPostProcessor
should declare empty defaultpostProcessBeanFactory
method #31476- Remove support for Protobuf 2.x and protobuf-java-format #31465
- Refine CRaC restoration logs #31462
- Allow repeatable writes in StreamingHttpOutputMessage #31449
- Add support for merging two BeanRegistrationAotContribution instances #31446
- Kotlin BeanFactory.getBean extension fails with nested generic in context #31439
- Log warning and skip resource hint registration for classpath location patterns #31429
- Revisit AOT support for generic constructor argument values #31420
- Add UriBuilderFactoryArgumentResolver. #31413
- Add Coroutines support for
@Cacheable
#31412 PartEvent
API should support limiting the number of file parts #31343- Revise support for quoted identifiers in
SimpleJdbcInsert
#31208 - When configuration class parsing fails, provide more information about the class that triggered the failure #31146
- WebClientResponseException defaults to ISO-8859-1 #31072
- Introduce
@DisabledInAotMode
in the TestContext framework #30834 - Support
TypedStringValue
during AOT processing #29074 - Support ETag generation on ResourceHttpRequestHandler #29031
- Better error reporting for
@Bean
creating when bean instance has been replaced with an incompatible type #28897 - Add Coroutines support for
@EventListener
#28343 - Support "*" catch-all mappings for MockMvc Filter registrations #28041
- Guard against
ConcurrentModificationException
when the response processescommitActions
#27587 - Improve
ControlFlowPointcut
extensibility #27187 - Uploading a too-large file should be a 4xx client error, not a 500 Internal Server Error #27170
- Add special handling of disconnected client errors in ExceptionHandlerExceptionResolver #26181
π Bug Fixes
- ConstructorResolver rejects a candidate if the parameter value is
null
#31495 - 3.2.0-RC1: No primary or single unique constructor found for interface java.util.Set #31488
- Can't link to Spring Framework 6.1.0 release candidate documentation #31480
- In
MockMvc
tests all filters end up with empty-stringfilterName
, breakingOncePerRequestFilter
#31474 <mvc:annotation-driven>
should not instantiate bean property values #31472- Graal VM native image: Substitution target for o.s.o.j.v.Target_BytecodeProvider is not loaded #31452
- JdkClientHttpRequest does not support Content-Length 0 #31451
- Fix typo in
ClassUtils.forName()
#31428 - AOT processing fails to determine proper target for a FactoryBean that produces an array #31426
- BeanDefinitionPropertyValueCodeGenerator#orderForConsistency expects values to be Comparable #31419
- Conversion not applied to
@RequestParam
default value if used for "null after conversion" case #31336 HandlerMethodValidationException.Visitor
incorrectly triggersother()
method instead ofrequestParam()
for@RequestParam
validation errors #31329- AbstractApplicationContext.refresh() leaves bean resources uncleaned when SmartInitializationSingleton throws a non BeansException #28878
π Documentation
- Document pattern matching support in
NameMatchMethodPointcut
#31500 - Fix small typo in javadoc #31455
- Expand explanation for the "lite" bean approach #29957
π¨ Dependency Upgrades
β€οΈ Contributors
Thank you to all the contributors who worked on this release:
@OlgaMaciaszek, @bdshadow, @funky-eyes, @izeye, @larsgrefer, and @mmoayyed
v6.1.0-RC1
β New Features
- Enforce REQUIRES_NEW for correct transaction configuration on transactional event listeners #31414
- TestCompiler should allow to configure the Locale that renders compiler messages #31408
- Consistent Object result declarations for JdbcClient's
ResultQuerySpec
#31403 - Move
ReactorResourceFactory
toorg.springframework.http.client
package #31399 - Prevent message resolution after context close #31397
- Handle STOMP messages to user destination in order #31395
- AOT bean registrations miss reflection hints on property fields #31390
- Support Jackson's DatatypeFeature in Jackson2ObjectMapperBuilder #31380
- Allow Filters to be initialized when they're added to MockMvc #31362
- Use schema-based config in sql-error-codes.xml #31354
- Optimize uses of
onErrorResume()
#31352 - AOT bean registrations miss reflection hints on interfaces #31350
SimpleAsyncTaskScheduler
should run fixed-delay tasks on scheduler thread #31334- Allow custom observation convention for
RestClient
#31325 - MockMvcHttpClientConnector support for RequestPostProcessor hook #31298
- Expose
shouldHandle(ApplicationEvent)
inApplicationListenerMethodAdapter
#31295 - Make
ReactorNettyClientRequestFactory
lifecycle-aware #31281 - Add a constructor with externally managed Reactor Netty resources to
ReactorNettyClientRequestFactory
#31280 - Consistent
CannotAcquireLockException
translation for PostgreSQL serialization failure behind JPA #31274 - Simplify
ServerRequestExtensions.queryParamOrNull()
#31264 - Reduce nested class lookups in ClassUtils #31258
- Print JVM restoration time in
DefaultLifecycleProcessor
#31252 - ValueLoaderEntryProcessor should not be created for every call to JCacheCache#get #31250
- Introduce
initialize()
method inAbstractRoutingDataSource
andAbstractRoutingConnectionFactory
#31248 - Add
MappingJackson2MessageConverter
constructors that accept anObjectMapper
#31234 - Eliminate synchronized block to avoid thread pinning in SingletonSupplier #31227
- Add OuputStream BodyInserter #31184
- SseEmitter should format a multiline String #30965
- Suppress logging from HandlerMapping when used for Spring Security's mvcRequestMatcher #30349
- Lenient handling of unencoded URIs in ForwardedHeaderTransformer #30137
- Support DispatcherType.INCLUDE in DefaultServletHttpRequestHandler #30113
- Introduce caching for functional routing #29985
- Log
CglibAopProxy
errors asWARN
instead ofINFO
#29773 - Add CharBufferDecoder #29741
- Provide the HttpRequest on the ClientResponse interface #28397
- Batch update return generated keys #28132
- Allow filters to be registered with MockMvc for particular dispatcher types #27717
- Introduce class-level execution phases for
@Sql
#27285 - Add default methods to
MailSender
andJavaMailSender
as appropriate #23651 - Remove all ApplicationListenerMethodAdapters on context close [SPR-17456] #21988
- Handle STOMP messages from client session in order #21798
- Call
Lifecycle.stop()
for already started beans on failed refresh [SPR-15468] #20028
π Bug Fixes
- Fix regression in JmsAccessor#setSessionAcknowledgeMode #31328
JdbcClient
does not updateKeyHolder
when using positional parameters #31297- AOT bean registrations miss reflection hints on public methods #31293
- DefaultFetchSpec should not buffer results in temporary list buffers #31282
- Missing reflection hint on Publisher for bean destroy methods support #31278
- Missing reflection hint on Eclipse FileLocator #31271
- Missing resource hint for spring.properties #31270
- Missing reflection hints on Kotlin classes for KotlinDetector #31269
- Missing reflection hint on MonetaryAmount in conversion service #31266
- Missing reflection hints for jakarta.inject classes #31259
- ResponseBodyEmitter ignores calls to complete but remains open after JSON write error while sending #30687
- The task in AsyncTaskExecutor throws an exception before execution, and ControllerAdvice will be called twice. #30232
- Suppress deprecation warning for AOT-generated code that refers to a deprecated member #29597
- Avoid duplicate
ApplicationListener
firing (proxy vs. target) #28322 - JCacheCache#putIfAbsent is not atomic #21591
π Documentation
- Add Search in all Spring Docs #31290
- Add missing period in RestClient documentation #31237
- Improve wording in Javadoc for
@Autowired
#31235 - Clarify
ClientHttpRequestInterceptor#intercept()
must close response if it throws exception after receiving the response #29751 - Create migration guide from RestTemplate to RestClient #23269
π¨ Dependency Upgrades
β€οΈ Contributors
Thank you to all the contributors who worked on this release:
@JakobFels, @OnlyWick, @StellarStrategist, @aahlenst, @alidandach, @bergander, @bramhaag, @chaewon121, @ctailor2, @e-freni, @esperar, @ghainesii, @hpoettker, @izeye, @joakimmohn, @kang-hl, @kriegaex, @kzander91, @markusheiden, @mdeinum, @qpakzk, @quaff, @ralph-riedel, @runeflobakk, @rwinch, @sephiroth-j, @shin-mallang, @violetbeach, and @vpavic
v6.0.13
β New Features
- Improve diagnostics for negative repeated text count in SpEL #31342
- Improve diagnostics when repeated text size calculation results in overflow in SpEL #31341
UnknownContentTypeException
is notSerializable
#31283- Reintroduce
FastClass
in CGLIB class names for@Configuration
classes #31272
π Bug Fixes
HibernateJpaDialect
andHibernateExceptionTranslator
throwSQLExceptionTranslator
-provided exception instead of returning it #31409- AnnotationScanner scanning leads to StackOverflowError with recursive annotation #31400
NamedParameterJdbcTemplate
throws unexpected exception fornull
query #31391- HTTP server exchange observations have incorrect UNKNOWN status tag if the client disconnected #31388
- Breaking change from 6.0.11 to 6.0.12 if you expect query parameters in
@RequestBody
#31327 - SpEL's
CompoundExpression.toStringAST()
omits?
for null-safe navigation #31326 ConcurrentLruCache
no longer supports capacity = 0 #31317- Using R2dbc transactional and non transactional on a database connection pool will fail for Oracle. #31268
- AOT-generated code no longer set bean class for beans created from a
@Bean
method #31242 - CGLIB proxy classes are no longer cached properly #31238
- Illegal reflective access in
ContextOverridingClassLoader.isEligibleForOverriding
#31232 - Fix RuntimeHintsPredicates matching rules for public/declared elements #31224
- MultipartParser should respect read position #31110
- WebClient reports 'Host is not specified' for URI with hostname and port, but without scheme #31033
- R2DBC Connection is closed during transaction when using TransactionAwareConnectionFactoryProxy #28133
- SpEL cannot evaluate or compile expression with null-safe
void
method invocation #27421 LazyResolutionMessage
does not implement propertoString
#21265
π Documentation
- Document Kotlin declaration site variance subtleties #31370
- Add missing
conversionService
field in doc example #31330 - Clarify documentation on Spring Web MVC pattern comparison #31294
- Improved documentation for MethodParameter#getAnnotatedElement #30397
- Javadoc for
BeanPropertyRowMapper.getColumnValue(ResultSet, int, Class)
is inconsistent with code #29285 - Referencing a
@Bean
method in a@Configuration
class'@PostConstruct
method leads to circular reference #27876 - Incorrect reference information about CGLIB supported method visibility #25001
- Clarify documentation for
@Transactional
on interfaces #23538
π¨ Dependency Upgrades
β€οΈ Contributors
Thank you to all the contributors who worked on this release:
v6.1.0-M5
β New Features
JdbcClient
should reject aList
as the parameter of theIN
clause of an SQL statement when using positional parameters #31215- Support one-time
@Scheduled
tasks #31211 - Deprecate
JOptCommandLinePropertySource
#31207 - Use
MergedAnnotations
API directly inAnnotationBeanNameGenerator
where possible #31203 - Introduce
MethodInvoker
API forTestExecutionListener
s #31199 - Use
Method#isDefault
to find default methods in interfaces #31197 - Refine logic to release WebSocket ByteBuffer via Callback with Jetty 12 #31182
- Make
ReactorClientHttpConnector
lifecycle-aware #31180 - Make
ReactorResourceFactory
lifecycle-aware #31178 - Consolidate HTTP Interface client support for MultipartFile and
@RequestPart
#31164 - Register reflection hints for
@TestPropertySource
factory #31160 - Introduce TaskDecorator variant for Context Propagation #31130
- Introduce reverse methods in AOP MethodMatchers and ClassFilters #26725
- Replace Reactive
awaitSingle()
usages by theMono
variant #31127 - Clarify and log that return value of HandlerMethod is ignored if reason of
@ResponseStatus
present #31121 - Instrument RestClient for Observability #31114
- Attempt to reset Servlet response before calling ExceptionHandlers #31104
- Raise log level to warn when configuration class enhancement cannot apply due to circular reference #31102
- Refine "checkpoint on refresh" error handling #31096
- Deprecate convention-based
@Component
stereotype names in favor of@AliasFor
#31093 - Reinstate support for legacy JSR-250
@javax.annotation.ManagedBean
and JSR-330@javax.inject.Named
annotations #31090 - Look up
@Component
stereotype names using@AliasFor
semantics #31089 - Add
@Nullable
tovalue
inparam()
methods inJdbcClient
#31084 - Ensure direct
@PropertySource
annotations override meta-annotations #31074 - Introduce var-args
params()
method inJdbcClient
'sStatementSpec
#31070 - Introduce overloaded methods in
JdbcTestUtils
that acceptJdbcClient
instead ofJdbcOperations
#31066 - Revise
JdbcTestUtils
method signatures to acceptJdbcOperations
instead ofJdbcTemplate
#31065 - Adapt native support for Hibernate 6.3.0 bytecode provider changes #31051
- Move blocking writeResource operation to boundedElastic #30928
- Move blocking view resolution to boundedElastic #30903
- Support parameter injection in
@BeforeTransaction
/@AfterTransaction
methods #30736 - Introduce
getContentAsString()
inContentCachingRequestWrapper
#30709 - Support configuring Jetty WebSocket server parameters #30344
- Optimize
InlineMap
andInlineList
in SpEL #30251 - Update
Pointcuts
to match getter methods by also excludingvoid
return type #30068 - Improve attribute handling in RequestPredicates #30028
- Add support for JSR-330 and Jakarta
@Inject
for autowiring test constructors #29851 - Optimize initial size in ContentCachingRequestWrapper when contentCacheLimit set #29775
- Optimize Hibernate native footprint by making ByteBuddy unreachable #29549
- Execute preflight checks before interceptors #29509
- Use
Arrays.hashCode(...)
inObjectUtils
#29051 - Improve toString representation of complex parameters in SimpleKey #27670
- Propagate
CoroutineContext
inCoWebFilter
#27522 - Add ParameterNamesModule to "well known" jackson modules #27511
- Optimize for single TransactionSynchronization #27335
- Improve performance of
CompositePropertySource#getPropertyNames
#27236 - Avoid calling executeBatch() with 0 batch size #27154
- Add maxAttempts to ExponentialBackOff #27071
- Spring Webflux: CoRouterFunctionDsl should expose the used CoroutineContext #27010
- spring-webflux filters don't pass CoroutineContext #26977
- Support declarative
ContextCustomizer
registration in the TestContext framework #26148 - Improve SpEL inline collection caching #25921
- Use Comparable instead of dedicated implementations #25478
- Support method injection when
@Autowired
(require=false) is used on mixed nullability args #24773 - Add factory method to create a NamedThreadLocal with an initial value #24705
- CglibAopProxy: Skip non-overridden methods of Object.class as those which for sure have no advice #24649
- Add conversion support for Pattern/Regex #24311
- Support quoted identifiers in
SimpleJdbcInsert
#24013 - Add composite for TaskDecorator #23692
- Spring AOP is not compatible with Kotlin Coroutines #22462
- Added Basic Authorization for UrlResource #1822
- Allow component name to be specified in
@ControllerAdvice
[SPR-16566] #21108 - MethodValidationInterceptor support for Mono and Flux method parameters #20781
- Support validating collection of objects on web controller method #16917
π Bug Fixes
- AOT check on a bean definition with an instance supplier is not consistent #31200
- Pass correct
SqlParameterSource
toNamedParameterJdbcTemplate
inDefaultJdbcClient
#31195 - Various methods in
SimpleJdbcInsert
prevent method chaining #31177 - Client observations URI template missing when using RestTemplateAdapter #31144
- Validator resolution can no longer be lazy #31137
- Make the JdbcClient method update(KeyHolder generatedKeyHolder) work with positional parameters [#31122](https://github.com/spring-projects/sp...
v6.0.12
β 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...
v5.3.30
β New Features
- Optimize
ClassUtils#getMostSpecificMethod
#31100 - Optimize whitespace checks in
StringUtils
#31069 - Align validation metadata handling in
PayloadMethodArgumentResolver
#31056 - Register an override for an existing adapter in
ReactiveAdapterRegistry
#31048 - Make bean initialization deterministic for multiple
@Autowired
methods on same bean class #30994 - Performance bottlenecks while creating scoped bean instances #30892
π Bug Fixes
- Possible classloader leak through incomplete clearing of annotation caches #31176
- Spring
LogFactory
implementation deviates from original ApacheLogFactory
in terms of abstract method declarations #31167 - Bean injection fails due to
nullSafeConciseToString()
invokingisEmpty()
on aMap
/Collection
proxy #31156 - SpelExpressionParser throws IllegalStateException instead of ParseException for invalid expression #31099
@DynamicPropertySource
in@Nested
test class cannot override dynamic properties from enclosing class #31085TransactionalApplicationListenerMethodAdapter
should find@TransactionalEventListener
on target class method #31037- ScheduledAnnotationBeanPostProcessor: graceful shutdown should not interrupt currently running jobs #31020
- Permgen memory leak due to
ClassInfo
caching injava.beans.Introspector
on JDK 11/17 #31005 MethodIntrospector.selectMethods(?)
fails to find methods in case of special bridge method arrangement #30907
π Documentation
- Fix documentation: Passing in Lists of Values for IN Clause does not work with JdbcTemplate #31229
- Refine CORS documentation for wildcard processing #31168
- Propagation REQUIRES_NEW may cause connection pool deadlock #31040
- Clarify R2DBC
ConnectionAccessor
andDatabasePopulator
exception declarations #30933 - Doc: Avoid deadlock in
@PostConstruct
through SmartInitializingSingleton or ContextRefreshedEvent #30889
v6.1.0-M4
β New Features
- Support resource patterns in
@TestPropertySource
locations #31055 - Support text blocks for inlined properties in
@TestPropertySource
#31053 @Bean
method should be always allowed to override scanned class matching its return type #31052- Support finding repeatable annotations in
AnnotatedTypeMetadata
#31041 - Fail fast if a
@Bean
method has a void return type #31007 - Use
Class#arrayType()
where feasible #31002 ReactiveAdapterRegistry
is not compatible with Mutiny 2 #31000- Avoid thread pinning in SseEmitter write operations #30996
- Add support for property file encoding in
@TestPropertySource
#30982 - Support custom properties file formats in
@TestPropertySource
#30981 - Support
@HttpExchange
for server side handling #30980 - Fail on error by default during test AOT processing #30977
- Deprecate
applyBeanPostProcessorsBeforeInitialization
andapplyBeanPostProcessorsAfterInitialization
in theAutowireCapableBeanFactory
interface #30974 - Provide methods for obtaining include/exclude path patterns in
MappedInterceptor
#30971 - Introduce
SimpleAsyncTaskScheduler
with virtual threads support (as an alternative toThreadPoolTaskScheduler
) #30956 - Support declarative mode for data binding #30948
- Support customizing the bind parameter name for constructor binding #30947
- Support
@RSocketExchange
for responding #30936 - Introduce
JdbcClient
with unified parameter capabilities (as a JDBC variant ofDatabaseClient
) #30931 - Allow preferred constructor to be defined at the
BeanDefinition
level #30917 - Remove obsolete native image reflection hint registration for
TransactionDefinition
constants #30854 - Deprecate
Constants
utility and stop using it internally #30851 - Use
Long.parseLong(CharSequence,int,int,int)
to avoid intermediateString
creation #30710 - Support Kotlin value class properties in SpEL #30468
- Add observability support for JMS #30335
@TransactionalEventListener
does not work withSimpleApplicationEventMulticaster.setTaskExecutor
#30244- Direct autowiring of existing collection subtype bean if
ApplicationContext
contains beans of typeT
#30022 - Clarify
FactoryBean.OBJECT\_TYPE\_ATTRIBUTE
supported types #29799 - Add support for Kotlin inline/value classes in
BeanUtils
#28638 - Publish event for
@TransactionalEventListener
with Spring WebFlux #27515 - Introduce
TransactionExecutionListener
callback API #27479 - R2DBC - DatabaseClient - Add bind method to accept an object #27282
- Introduce RowMapper with automatic binding to fields #26594
- Add support for Class-based mapping in DatabaseClient #26021
@Component
not picked up by@ComponentScan
if it has the same simple name as the main class #25952- Support custom TimeUnits in StopWatch #25803
@Lookup
doesn't work in case of AbstractBeanFactory's cacheBeanMetadata=false #25749- Injection of List is inconsistent with Resource[] #24845
- Provide guidance and better diagnostics when dependency injection makes a bean ineligible for complete post-processing #24092
- Availability of a bean definition's resolved factory method depends upon a side-effect of getBeanNamesForType which is lost when metadata caching is disabled #23795
- Validate
afterThrowing
method signature inThrowsAdviceInterceptor
#1896 - Support resource patterns in
@PropertySource
locations [SPR-16785] #21325 - Increase reusability of
Validator
[SPR-15314] #19877 - Support additional file formats in
ReloadableResourceBundleMessageSource
#18990 - Reactive types support for
@Cacheable
methods [SPR-14235] #17920 - Support caching annotations for
CompletableFuture
return values [SPR-12967] #17559
π Bug Fixes
- Move
ServerWebExchange
Kotlin extensions to the right package #31046 - Spring does not find all
@ComponentScan
or@PropertySource
annotations #30941 - 404 on static resource does not return ProblemDetail response #30930
π Documentation
- Document
@AliasFor
support inAnnotatedTypeMetadata.getAnnotationAttributes()
#31042 - Update documentation for HTTP Interface return values #30959
- Update documentation for data binding improvements #30952
- Use of
ApplicationEventPublisher
in a reactive call stack [SPR-16481] #21025
π¨ Dependency Upgrades
- Upgrade to JUnit 5.10 #30970
- Upgrade to Micrometer 1.12.0-M2 #30997
- Upgrade to Reactor 2023.0.0-M2 #31014
β€οΈ Contributors
Thank you to all the contributors who worked on this release:
@OlgaMaciaszek, @alidandach, @devdilson, @graceyu-own, @izeye, @kilink, @plx927, and @remeio
v6.1.0-M3
β New Features
- Update warning log messages for SimpleAsyncTaskManager to take into account virtual thread mode #30902
- Extract forwarded header handling out of UriComponentsBuilder #30886
- Reduce logging for ResourceNotFoundException #30884
- Revisit public API for
MBeanExporter
#30874 - Early support for JDK 22 #30845
- DataAccessUtils result accessors with Optional return value #27735
- Add convert(Object, TypeDescriptor) method to ConversionService #25394
- Revisit DataAccessException translation API #24634
π Bug Fixes
@CachePut
evaluates key before cache condition #22769- Topic messages are not sent when using transacted JmsTemplate in 'TransactionSynchronization.afterCommit' phase [SPR-16270] #20817
π Documentation
- Update javadoc to take virtual threads into account #30905
β€οΈ Contributors
Thank you to all the contributors who worked on this release:
v6.1.0-M2
β New Features
- Refine the log message printed after restoration with CRaC #30876
- Add HttpExchangeAdapter for RestClient #30869
- Use latest version of
sockjs-client
inAbstractSockJsService
#30848 - ClientHttpRequestFactory based on Reactor Netty HttpClient #30835
- Pause/resume capability for
ThreadPoolTaskExecutor
andThreadPoolTaskScheduler
#30831 - Rearrange HttpHeader adapters #30823
- Support use of MockRestServiceServer with RestClient #30821
- Allow built ServerResponse to throw exception #30818
- Method validation error handling by controller method parameter type #30813
- Add
RestClient
Kotlin extensions #30807 - Detect interface parameter annotations also from spring-messaging HandlerMethod #30801
- Allows JdkClientHttpRequest.DISALLOWED_HEADERS to be customized. #30788
- Change restore logging to info level #30775
- Add MultipartFileArgumentResolver for HTTP interface client #30728
- Align KeyValues of Scheduled-annotated observability with OpenTelemetry conventions #30721
- Detect invalid transaction configuration for transactional event listeners #30679
- Blocking execution for WebFlux controller methods #30678
- Add a CoExchangeFilterFunction for WebClient similar to CoWebFilter #30650
- Built-in Web Support for Method Bean Validation #30645
- Spring MVC and WebFlux handling of method validation errors #30644
- HttpClient based ClientHttpRequestFactory #30478
- HTTP interface client infrastructure and adapter for RestTemplate #30117
- Instrument Scheduled-annotated methods for observability #29883
- Add AOT support for Kotlin constructors with optional parameters #29820
- Introduce RestClient #29552
- Space in integer request parameter neither triggers the default value nor generates a 400 #29550
- Improve 404 error handling in Spring MVC #29491
- Issue with
equals(?)
/hashCode()
forResolvableType.forRawClass(?)
#28608 - Introduce
ModuleResource
for resources loaded from a givenModule
#28507 ArrayToCollectionConverter
should default toList
if target type isCollection
#28048- ResolvableType should allow to determine matching type argument for generic return type #27748
- Parallel graceful shutdown for
ThreadPoolTaskExecutor
andThreadPoolTaskScheduler
#27090 - Support target instantiation and binding via constructor in DataBinder #26721
- Support for MultiValueMap elements in web data binding #26297
- Add binding support to functional servlet and reactive stack #25943
@Scheduled
methods in beans created by FactoryBeans are not cancelled #24629ExecutorConfigurationSupport
API refinement to control internal executor shutdown #24497- DataBinder using constructor parameter should use path variables #22748
- Add JDBC SqlValue classes for arrays #1850
- Support Kotlin parameter default values in HTTP handler methods #21139
- Multiple TaskSchedulers to be supported with
@Scheduled
[SPR-16271] #20818 - Let the DataBinder construct nested objects #20806
- Add support to any Iterable types on PropertyAccessor #907
π Bug Fixes
- ScheduledAnnotationBeanPostProcessor fails without Reactive Streams on the classpath #30707
@SessionAttributes
handler invoked too early if controller method execution is deferred #30337- Fix AbstractMessageConverter not delegating to ContentTypeResolver when message header is null #29768
- JSON deserialization for Kotlin collections on inherited classes #24033
π Documentation
- Update documentation on customizing validation errors with MessageSource #30653
- Update documentation for method validation improvements in spring-context, Spring MVC, and WebFlux #30643
π¨ Dependency Upgrades
- Upgrade to Context Propagation 1.1.0-M3 #30882
- Upgrade to Kotlin 1.9.0 #30719
- Upgrade to Kotlin Coroutines 1.7.2 #30833
- Upgrade to Micrometer 1.12.0-M1 #30872
- Upgrade to Project CRaC 1.3.0 #30812
- Upgrade to Reactor 2023.0.0-M1 #30856
β€οΈ Contributors
Thank you to all the contributors who worked on this release:
@OlgaMaciaszek, @erichaagdev, @izeye, @kooixh, @ljtfreitas, @marschall, @mdeinum, @spencergibb, and @yoshikawaa
v6.0.11
β 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