v7.0.0-M4
- Make BeanDefinitionPropertyValueCodeGeneratorDelegates public #34761
- Add AOT support for Registry of HTTP Interface Proxies #34750
- Make HttpServiceGroupConfigurer extend Ordered. #34739
- Introduce
queryParamCount()
inMockRestRequestMatchers
#34703 - Add method level callback for HttpRequestValues initialization #34699
- Refine
UriUtils#decode
andStringUtils#uriDecode
implementation and documentation #34673 - Add visibility and return type to SimpleMethodMetadata toString #34649
- Revise
RepeatableContainers
API to better guide developers #34637 - Extract
AnnotatedElementAdapter
to public type #34628 - Add support for
ImportAware
inBeanRegistrar
#34627 - Introduce Stream variant methods for SqlQuery #34623
- Generate compiled SpEL expressions using Java 17 byte code level #34602
- Allow adding bean name aliases in the programmatic bean registration DSL #34599
- Support API Versioning in Tests #34568
- Support API Versioning on the Client Side #34567
- Propagate
CoroutineContext
to theCoExchangeFilterFunction
#34555 - Introduce
OptionalToObjectConverter
#34544 - Create Registry for HTTP Interface Proxies with Extensible Registration DSL #33992
- Reconsider log level for
final
methods on CGLIB proxy classes #33939 - Enforce Servlet 6.1 and WebSocket 2.2 baselines #33918
- Consider ClassFile API for reading class metadata from bytecode #33616
- Give
JdbcClient
access toConversionService
for converting custom database object types #33467 - Consider not rejecting preflight requests when no CORS configuration is provided #31839
- Turn "CDS" documentation into a "JVM AOT cache" one #34700
- Document that
attribute
is optional in@AliasFor
for overrides with the same name #34641 - Reinstate links to JUnit 5 Javadoc APIs #27497
- Upgrade to AspectJ 1.9.24 #34752
- Upgrade to Gson 2.13.0 #34772
- Upgrade to Kotlin 2.1.20 #34632
- Upgrade to Micrometer 1.15.0-RC1 #34771
- Upgrade to Reactor 2025.0.0-M2 #34770
Thank you to all the contributors who worked on this release:
@OlgaMaciaszek, @Tussle0410, @dmitrysulman, @kilink, and @quaff
v6.2.6
- An option for SimpleAsyncTaskExecutor to throw an exception when limit is reached #34727
- Provide first-class support for Bean Overrides with
@ContextHierarchy
#34723 - Micro performance optimizations #34717
- Suppress "Unable to rollback against JDBC Connection" in case of timeout (connection closed) #34714
- Avoid early FactoryBean instantiation for type-based retrieval with includeNonSingletons=false and allowEagerInit=true #34710
- ReactiveCachingHandler still not using error handler on sync cache. #34708
- Add an
exchangeForRequiredValue
variant toRestClient
#34692 - Recursively boxing Kotlin nested value classes in
CoroutinesUtils
#34682 - ServletServerHttpRequest does not use charset parameter of application/x-www-form-urlencoded #34675
- LifecycleGroup concurrent start and start timeout #34634
- HibernateJpaDialect exception translation misses concrete exceptions wrapped in Hibernate's ExecutionException #34633
- Inconsistency in
SseEmitter.onCompletion()
behavior between Spring 6.2.3 and 6.2.5 #34762 - Deadlock while creating Spring beans with parallel bootstrap threads on IBM Liberty #34729
PropertyBatchUpdateException
: causes of nestedPropertyAccessException
s not shown in output #34691- IllegalAccessError for package-private member of AzureStorageConfiguration on WebSphere #34684
- Change in Jar usecache behavior with Spring 6.1.x causing java.lang.IllegalStateException: zip file closed #34678
- Startup performance regression due to CGLIB class load attempts in Spring 6.1.x #34677
- An infinite wait on a parallel context.getBean() #34672
- InvalidObservationException: Invalid start: Observation 'http.client.requests' has already been started #34671
@Configuration
classes can no longer beabstract
without@Bean
methods #34663- Generated-code for LinkedHashMap is missing static keyword #34659
- Detect late-set primary markers for autowiring shortcut algorithm #34658
@MockitoBean
with custom@Qualifier
is not injected into@Configuration
class #34646- Qualifier Resolution Issue in Parent-Child Context Hierarchies #34644
- Enforced container-level acknowledge call for custom acknowledgement mode #34635
- UriComponentsBuilder does not treat a URN as opaque if it contains a slash #34588
- Migrating from Spring 6.1.x to 6.2.x leads to exceptions in a Pekko setup #34303
- Update Javadoc for
ignoreDependencyInterface()
inAbstractAutowireCapableBeanFactory
#34747 - Update Javadoc to stop mentioning 5.3.x as the status quo #34740
- Fix broken link for Server-Sent Events #34705
- Fix typo in Bean Validation section of reference manual #34686
- Remove unnecessary closing curly brackets in Javadoc #34679
- Add javadoc notes on potential exception suppression in
ListableBeanFactory#getBeansOfType
#34629 - Remove remaining references to Forwarded headers in MvcUriComponentsBuilder #34625
Thank you to all the contributors who worked on this release:
@acktsap, @dmitrysulman, @iggzq, @izeye, @ngocnhan-tran1996, @obourgain, and @tobias-haenel
v6.1.19
- Suggest compilation with
-parameters
whenAspectJAdviceParameterNameDiscoverer
fails against ambiguity #34618
PropertyBatchUpdateException
: causes of nestedPropertyAccessException
s not shown in output #34698- Change in Jar usecache behavior with Spring 6.1.x causing java.lang.IllegalStateException: zip file closed #34694
- Startup performance regression due to CGLIB class load attempts in Spring 6.1.x #34693
- IllegalAccessError for package-private member of AzureStorageConfiguration on WebSphere #34690
@Configuration
classes can no longer beabstract
without@Bean
methods #34689- Generated-code for LinkedHashMap is missing static keyword #34661
- AbstractReactiveTransactionManager throws IllegalStateException when rollback fails after commit attempt #34619
v6.2.5
- Make dependencies on AssertJ and JUnit in
spring-core-test
optional #34612 - Suggest compilation with
-parameters
whenAspectJAdviceParameterNameDiscoverer
fails against ambiguity #34609 - SseBuilder in ServerResponse should allow empty comment #34608
- MockServerWebExchange does not allow setting the ApplicationContext on the base class #34601
FormHttpMessageConverter
should throwHttpMessageNotReadableException
when the http form data is invalid #34594- Provide a method to retrieve all singleton autowire candidates from the bean factory #34591
- PathMatchingResourcePatternResolver regression for jar root scanning in 6.2.4 #34607
- AbstractReactiveTransactionManager throws IllegalStateException when rollback fails after commit attempt #34595
- Recursively boxing/unboxing nested inline value classes #34592
MvcUriComponentsBuilder
javadocs inaccurately reflects usage of forwarded headers #34615- Fix formatting and update links to scripting libraries and HDIV #34603
- Remove dubious link to MockObjects Web site in reference manual #34593
- Fix
StringUtils#uriDecode
Javadoc #34590
- Upgrade to ASM 9.8 (for early Java 25 support) #34600
Thank you to all the contributors who worked on this release:
@Helmsdown, @dmitrysulman, and @ngocnhan-tran1996
v7.0.0-M3
- First-class support for
BeanRegistrar
registration onGenericApplicationContext
#34574 - Support API Versioning in Request Mappings #34566
- Remove support for
Aware
interfaces inBeanRegistrar
#34562 - Add support for target type to
BeanRegistry
#34560 - Allow chained BeanRegistry registration #34557
- Remove deprecated
rowsExpected
property ofSqlQuery
#34530 - Upgrade NullAway to 0.12.4 #34525
- Improve SimpleKey hashing function #34483
- Revisit MockHttpServletResponse after Servlet API clarifications #34467
- Refine Kotlin serialization converters/codecs conditions #34438
- Support open polymorphism with Kotlin Serialization #34433
- SseEmitter IOException on HTTP Connection Close #33832
- Remove convention-based annotation attribute override support #28761
- Support
Optional
with null-safe and Elvis operators in SpEL expressions #20433 - Programmatic bean registration with configuration classes #18353
- Upgrade match check in WebSocketHandlerMapping does not work if handler mapped to
"/*"
#34503
- Refine Kotlin serialization reference documentation #34437
- Upgrade to Reactor 2025.0.0-M1 #34577
Thank you to all the contributors who worked on this release:
@pankratz76, @philwebb, and @quaff
v6.2.4
- JettyCoreHttpHandlerAdapter compatibility with Jetty 12.0.17 #34561
- HandlerMethodValidationException.Visitor should support RequestBody with method parameter constraints #34549
- Allow
ContentResultMatchersDsl
matchers for supertypes of the checked type #34542 - Avoid
JarURLConnection
resource leak inAbstractFileResolvingResource.exists()
#34528 - Deprecate
rowsExpected
property ofSqlQuery
for removal #34526 - Supply
RuntimeHints
to anAotContextLoader
#34513 - Deprecate and remove use of UrlPathHelper in ServletWebSocketHandlerRegistry #34508
- Avoid unnecessary CGLIB processing on configuration classes #34486
- Inconsistent default class loaders in hint classes #34470
- Add missing converters to
DefaultRestClientBuilder
#34439 - Improve
BeanFactory
/ObjectProvider
to select the only one default candidate among non-default candidates #34432
MockCookie.parse()
fails to parse custom attribute with a value #34575BeanNotOfRequiredTypeException
if@Bean
factory method returnsnull
#34543- Regression in 6.2.3: No unique bean available for injection point with unresolvable generics #34541
- GenericConversionService cannot find a converter when converting to a Kotlin list of maps #34535
- isClientDisconnectedException needs to protect against null input #34533
- spring boot 3.4.3 + TimedAspect causes thread to hang #34522
- Missing Partitioned cookie support in reactive HTTP clients #34521
- DefaultManagedTaskExecutor throws java.lang.UnsupportedOperationException: isShutdown when rejecting tasks #34514
- FileSystemResource location does not end with slash for RouterFunction check #34509
- AbstractJackson2HttpMessageConverter not resolving generic type for request body since 6.2.3 #34504
- Request param handling in HttpRequestValues overrides existing URI variables with same name #34499
- MockHttpServletResponse - handle multiple values for Content-Language header #34488
- Endless loop with DataSourceUtils in spring-jdbc #34484
- MockHttpServletResponse#setHeader does not remove header for null values #34464
- ContentCachingResponseWrapper.setHeader does not handle null value properly. #34460
- Component scan fails to find bean candidates in the embedded jar file in META-INF/context.xml for embedded Tomcat application #34446
- 6.2.0 broke with "Could not register object [
@someHash
] under bean name 'blabla': there is already object [@sameHash
] bound" #34427 - 503 status code after completing SseEmitter in onTimeout #34426
NullPointerException
thrown whenConfigurationClassEnhancer
creates CGLIB proxy #34423- Add onRequest() hook for propagating request from downstream #34388
- Content-Type response header duplicated for failed StreamingResponseBody return value #34366
- Task scheduler configured by XML is not eligible for getting processed by all BeanPostProcessors #34015
- Fix typo in Spring MVC error responses documentation #34552
- Document that Spring Framework 6.x does not yet support JSpecify annotations #34551
- Fix web and webflux reference links #34517
- Document default KeyGenerator in spring-cache XSD #34468
- Fix broken antora task #34454
- Add
@since
tag for formField() and formFields in MockHttpServletRequestDsl #34448 - Improve Javadoc of ObjectProvider to clarify what is unique #34447
- rest-http-interface example code can't run #34443
- Add Javadoc since for HandlerMethod(HandlerMethod, Object, boolean) #34431
- Document wrapping behavior of
TestExecutionListener
callbacks #34422 - Cross reference annotation search APIs in Javadoc #34421
Thank you to all the contributors who worked on this release:
@chenggangpro, @dark2momo, @dmitrysulman, @izeye, @ngocnhan-tran1996, @pankratz76, @quaff, @ryanprayogo, and @vpavic
v6.1.18
- Avoid unnecessary CGLIB processing on configuration classes #34487
- Inconsistent default class loaders in hint classes #34473
- DefaultManagedTaskExecutor throws java.lang.UnsupportedOperationException: isShutdown when rejecting tasks #34515
- Endless loop with DataSourceUtils in spring-jdbc #34497
- MockHttpServletResponse - handle multiple values for Content-Language header #34491
- MockHttpServletResponse#setHeader does not remove header for null values #34466
- ContentCachingResponseWrapper.setHeader does not handle null value properly. #34465
- Task scheduler configured by XML is not eligible for getting processed by all BeanPostProcessors #34436
NullPointerException
thrown whenConfigurationClassEnhancer
creates CGLIB proxy #34425
- Fix broken antora task #34455
- Upgrade to Reactor 2023.0.16 #34579
v7.0.0-M2
- Consider Kotlinx Serialization for JSON as a Jackson/Gson/Jsonb equivalent #34410
- Improve AnnotatedMethod#equals and HandlerMethod CORS lookups #34375
- Stop using explicitly aliased
value
attribute as@Component
name #34346 - Remove Netty 5 support #34345
- Refine
GenericApplicationContext#registerBean
nullness #34343 - Add HttpHeaders copy factory method #34341
- StandardWebSocketClient should not expose localAddress #34331
- HierarchicalUriComponents should format Collection URI var values in query param #34311
- Consistent formatting of IPv6 host in forwarded header handling #34253
- Allow customization of cookie parsing in Jetty and JDK HttpClient connectors #34081
- Prevent further configuration once AbstractJdbcCall is compiled #33729
AnnotatedElementUtils.getAllAnnotationAttributes(…)
missing@Nullable
#34394
- Fix Javadoc
@code
tags #34342
Thank you to all the contributors who worked on this release:
@craftmaster2190, @dssievewright, @izeye, @m4tt30c91, and @remeio
v6.2.3
- 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
- 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
- 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
- Upgrade to Micrometer 1.14.4 #34401
- Upgrade to Reactor 2024.0.3 #34403
- Upgrade to RSocket 1.1.5 #34402
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
v6.1.17
- Improve PathMatcher to PathPatternParser migration in mvc XML configuration #34102
- Avoid logger serialization behind shared EntityManager proxy #34085
- Check hasNext when when accessing sessionIds from UserDestinationResult #34397
- Quartz-style Nth Day of Week cron expressions can overflow to other month #34377
- Stop assuming that AspectJ Advice has JoinPoint as the first argument #34369
ConfigurationClassEnhancer
should explicitly set customClassLoader
on CGLIBEnhancer
(aligned withCglibAopProxy
) #34358- Property binding to
Map
that implementsIterable
no longer works #34338 AnnotationBeanNameGenerator
issues warning about explicitly aliasedvalue
attribute #34330- Connection reset exception from RestTemplate call in Spring Web MVC controller is ignored #34278
- Wrong parentId tracking in FlightRecorderApplicationStartup #34254
- Ensure
AsyncListener#onError
does not return until dispatch completes #34196 - SpEL fails to invoke
MethodHandle
function reference accepting only varargs #34114