Releases: spring-projects/spring-framework
v7.0.0-M6
β New Features
- Allow 
FixedBackOffto be constructed with only a custom interval #35028 - Use String.replace in MetadataEncoder #35025
 - Revise 
@Nullabledeclarations forcontains*()methods inCollectionUtils#35023 - Introduce 
JacksonJsonMessageConverter.getObjectMapper()#34963 - Remove 
(String, String)variants ofsetProperty()andwithProperty()fromMockEnvironment#34948 - Allow access to 
envfromSupplierContextDsl#34943 - Consistently declare nullability 
@Contractfor core utilities #34934 - Update HttpServiceGroupConfigurer API #34926
 - Make 
ProblemDetailJacksonXmlMixincompatible with Jackson 3 #34925 - Introduce hints in 
RestClientAPI #34924 - Add Kotlin body advices #34923
 - Add support for callable references to 
BeanRegistrarDsl#34922 - Additional updates for API versioning in test and client support #34919
 - Define nullability 
@ContractforquoteandgetFilenameinStringUtils#34896 - Support 
@Importon interfaces #34820 - Use HexFormat in CharacterEditor #34798
 - Use HexFormat in ContentDisposition #34797
 - Introduce minimal retry functionality as a core framework feature #34716
 - Add support for "application/*+x-protobuf" media type #34645
 - Support OutputStream and InputStream in HTTP Interface clients #32358
 
π Bug Fixes
@ContractforSupplierUtils.resolve(Supplier)incorrectly declares!null -> !null#34987- Consistent null check on injection points for pre-existing singleton beans #34952
 
π Documentation
- Refine null-safety documentation terms #34982
 - Stop referring to JUnit 5 in documentation #34970
 - Fix typos in API versioning #34961
 - Add missing 
sinceattributes for@Deprecateddeclarations #34942 - Improve Javadoc for 
getFilename()andgetFilenameExtension()inStringUtils#34932 - Add documentation for HTTP service proxy registry #34912
 - Update outdated JettyHttpHandlerAdapter example in reference documentation #34877
 
π¨ Dependency Upgrades
- Upgrade to Jackson 3.0.0-rc5 #34945
 - Upgrade to Jetty 12.1.0.beta0 #34930
 - Upgrade to Kotlin 2.2.0-RC2 #34946
 - Upgrade to Micrometer 1.15.1 #35019
 - Upgrade to Netty v4.2.2.Final and Reactor 2025.0.0-SNAPSHOT #34996
 - Upgrade to Reactor 2025.0.0-M4 #34997
 
β€οΈ Contributors
Thank you to all the contributors who worked on this release:
@Tussle0410, @doroszkiewicz, @fmbenhassine, @hgh1472, @izeye, @kilink, @kssumin, @kwondh5217, @quaff, @scottfrederick, and @violetagg
v6.2.8
β New Features
- Nullability 
@Contractdeclaration forCodeFlow.isIntegerForNumericOp()is unnecessary #34985 - Serializer hint registration is broken for some Kotlin classes #34979
 - Clients created using JdkClientHttpRequestFactory set content-length for GET, DELETE and HEAD requests #34971
 - Support registration of non-public 
BeanDefinitionReadervia@ImportResource#34928 - Make max size for pattern cache in 
PathPatternMatchableHandlerMappingconfigurable #34918 - Add optimized DataBufferInputStream overrides #34799
 
π Bug Fixes
- Encode non-printable character in Content-Disposition parameter #35034
 - Allow update of existing 
WebSessionafter max sessions limit is reached #35013 - Fix support for collections in 
AbstractKotlinSerializationHttpMessageConverter#34992 - PathPattern#combine throws StringIndexOutOfBoundsException #34986
 - Fix AOT code generation for autowired inner class constructor #34974
 - AbstractFileResolvingResource.exists closes JAR resource input streams with v6.2.7 #34955
 - Enhanced configuration class fails to call package-visible superclass constructor on WebSphere #34950
 - Fix 
REPLY_CHANNELheader check inMessageHeaderAccessor#34949 MockEnvironmentdoes not acceptObjectproperty values #34947PropertySourcesPlaceholderConfigurerno longer usesConversionServicefromEnvironment#34936@ContractforStreamUtils.drain()incorrectly declaresnullresults in an exception #34933- Inconsistent behavior injecting null 
@Beanfactory parameter #34929 - MockHttpServletRequest.addHeader duplicates "Content-Type" header #34913
 - BeanUtils.getParameterNames fails for Kotlin data classes #34760
 - JAXB message converters ignore Content-Type charset #34745
 - Aspect Not Triggered After Restart in Spring Boot 3.4.x (But Works in 3.3.10) #34735
 - Add caching headers to unmodified static resources #34614
 
π Documentation
- Apply gh-34856 to MockClientHttpRequest in testfixture package #35031
 - Fix 
ResourceHttpRequestHandler#setHeadersJavaDoc #35004 - Remove reference to AspectJ Eclipse Javadoc #35000
 - Mention CompletableFuture in Spring MVC "Asynchronous Requests" section of reference manual #34991
 - Fix exception name in ModelAttribute docs #34980
 - Fix syntax in 
@SqlGroupexample #34972 - Update X-Forwarded-Proto doc to say https / http #34959
 - Update Guidance on Best Practices To Test Code That Uses RestClient and RestTemplate #34892
 - Add a section for WebAsyncTask in mvc-ann-async.adoc #34885
 - Clarify what 
@RestControllerAdvicevs@ControllerAdviceapply to by default #34866 - Improve Javadoc for 
@ExceptionHandler#34554 
π¨ Dependency Upgrades
- Upgrade to HttpComponents HttpClient 5.5 #34941
 - Upgrade to Micrometer 1.14.8 #35020
 - Upgrade to Reactor 2024.0.7 #35021
 
β€οΈ Contributors
Thank you to all the contributors who worked on this release:
@Allan-QLB, @Aurh1l, @BowieDu, @DhruvTheDev1, @Dongnyoung, @JimmyAx, @addoDev, @dmitrysulman, @izeye, @jjank, @kilink, @mbazos, @msnsaeed71, @ngocnhan-tran1996, @nosan, @remeio, @vpavic, and @yuzawa-san
v6.1.21
π Bug Fixes
- Encode non-printable character in Content-Disposition parameter #35035
 - Allow update of existing 
WebSessionafter max sessions limit is reached #35018 - Enhanced configuration class fails to call package-visible superclass constructor on WebSphere #34951
 
π¨ Dependency Upgrades
- Upgrade to Reactor 2023.0.19 #35022
 
v7.0.0-M5
β New Features
- Deprecate 
PropertyPlaceholderConfigurerandPreferencesPlaceholderConfigurerfor removal #34880 - Add Consumer based variant methods to HttpRequestValues builder #34870
 - Add defaultApiVersion to RestClient and WebClient builders #34857
 - Evaluate system properties in default HttpClient in ReactorClientHttpRequestFactory #34850
 - Use beanClassLoader in the HTTP Service Registrar #34846
 - Deprecate JUnit 4 support in the Spring TestContext Framework #34794
 - Ability to validate supported API versions only against explicitly configured ones #34775
 - Revisit Jackson support #33798
 
π Bug Fixes
ClassFileAnnotationMetadata.fromTypeDescriptor(β¦)fails on Java 24 #34882- Align ClassFileClassMetadata with other implementations #34869
 - Incorrect filtering of groups with HttpServiceGroupConfigurer #34867
 - Aggregated Javadoc no longer published since 7.0.0-M4 #34774
 
π Documentation
- Add Reference Documentation for API Versioning #34569
 
π¨ Dependency Upgrades
- Upgrade to Kotlin 2.1.21 #34900
 - Upgrade to Micrometer 1.15.0 #34888
 - Upgrade to Reactor 2025.0.0-M3 #34897
 
β€οΈ Contributors
Thank you to all the contributors who worked on this release:
@dmitrysulman, @philwebb, and @siom79
v6.2.7
β New Features
- Forward more methods to underlying InputStream in NonClosingInputStream #34893
 - Introduce Spring property for the default property placeholder escape character #34865
 - Close ApplicationContext once AOT processing has completed #34841
 - Fix 
AbstractJackson2HttpMessageConverter#getObjectMappersForTypenullness #34811 - Add option for case-insensitive match to PatternMatchUtils #34801
 - RestClient 
@RequestBodyparameters lose generic type information when creating HTTP service beans #34793 - Adds option to set Principal in MockServerWebExchange #34789
 
π Bug Fixes
- Beans created by FactoryBean are not considered as autowiring candidates if another thread holds a singletonLock #34902
 PropertySourcesPlaceholderConfigurerplaceholder resolution fails in several scenarios #34861- HttpComponentsClientHttpRequestFactory setConnectionRequestTimeout not working with httpclient 5.3.1 #34851
 - Fragment.create() requires mutable map - which is unusable when used with Kotlin #34848
 - Duplicate 
BeanOverrideHandlerdiscovered in@Nestedtest case with superclass from different class or in interface implemented multiple times #34844 - Accidental ClassLoader defineClass enforcement after #34677 #34824
 - HttpEntity.EMPTY headers should not be possible to mutate via HttpHeaders constructor #34812
 - AbstractFileResolvingResource.exists incorrectly reports result for resources inside of spring-boot executable jar #34796
 - Correctly expand query param with same name from URI variables array #34783
 - R2DBC 
NamedParameterUtilsonly expands reused collection parameter once #34768 PathMatchingResourcePatternResolverwrongly assumes thattarget/classesalways exists #34764
π Documentation
- Clarify 
CompositePropertySourcebehavior forEnumerablePropertySourcecontract #34886 - Javadoc and 
@Nullableannotation forservletContextparameter ofConfigurableWebEnvironment.initPropertySourcesare contradictory #34845 - Spring MVC: 
@EnableAsyncneeds to be redeclared for each ApplicationContext #34843 - Provide a working example instead of unclear placeholders #34828
 
π¨ Dependency Upgrades
β€οΈ Contributors
Thank you to all the contributors who worked on this release:
@Artur-, @blake-bauman, @iifawzi, @kilink, @quaff, @whlit, and @zzoe2346
v6.1.20
β New Features
- Add option for case-insensitive match to PatternMatchUtils #34802
 
π Bug Fixes
- HttpComponentsClientHttpRequestFactory setConnectionRequestTimeout not working with httpclient 5.3.1 #34854
 - Accidental ClassLoader defineClass enforcement after #34677 #34839
 
π Documentation
- Clarify 
CompositePropertySourcebehavior forEnumerablePropertySourcecontract #34887 
π¨ Dependency Upgrades
- Upgrade to Reactor 2023.0.18 #34899
 
v7.0.0-M4
β New Features
- 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#decodeandStringUtils#uriDecodeimplementation and documentation #34673 - Add visibility and return type to SimpleMethodMetadata toString #34649
 - Revise 
RepeatableContainersAPI to better guide developers #34637 - Extract 
AnnotatedElementAdapterto public type #34628 - Add support for 
ImportAwareinBeanRegistrar#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 
CoroutineContextto theCoExchangeFilterFunction#34555 - Introduce 
OptionalToObjectConverter#34544 - Create Registry for HTTP Interface Proxies with Extensible Registration DSL #33992
 - Reconsider log level for 
finalmethods 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 
JdbcClientaccess toConversionServicefor converting custom database object types #33467 - Consider not rejecting preflight requests when no CORS configuration is provided #31839
 
π Documentation
- Turn "CDS" documentation into a "JVM AOT cache" one #34700
 - Document that 
attributeis optional in@β AliasForfor overrides with the same name #34641 - Reinstate links to JUnit 5 Javadoc APIs #27497
 
π¨ Dependency Upgrades
- 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
 
β€οΈ Contributors
Thank you to all the contributors who worked on this release:
@OlgaMaciaszek, @Tussle0410, @dmitrysulman, @kilink, and @quaff
v6.2.6
β New Features
- 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 
exchangeForRequiredValuevariant 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
 
π Bug Fixes
- 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 nestedPropertyAccessExceptions 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
 @Configurationclasses can no longer beabstractwithout@Beanmethods #34663- Generated-code for LinkedHashMap is missing static keyword #34659
 - Detect late-set primary markers for autowiring shortcut algorithm #34658
 @MockitoBeanwith custom@Qualifieris not injected into@Configurationclass #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
 
π Documentation
- 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
 
β€οΈ Contributors
Thank you to all the contributors who worked on this release:
@acktsap, @dmitrysulman, @iggzq, @izeye, @ngocnhan-tran1996, @obourgain, and @tobias-haenel
v6.1.19
β New Features
- Suggest compilation with 
-parameterswhenAspectJAdviceParameterNameDiscovererfails against ambiguity #34618 
π Bug Fixes
PropertyBatchUpdateException: causes of nestedPropertyAccessExceptions 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
 @Configurationclasses can no longer beabstractwithout@Beanmethods #34689- Generated-code for LinkedHashMap is missing static keyword #34661
 - AbstractReactiveTransactionManager throws IllegalStateException when rollback fails after commit attempt #34619
 
π Documentation
v6.2.5
β New Features
- Make dependencies on AssertJ and JUnit in 
spring-core-testoptional #34612 - Suggest compilation with 
-parameterswhenAspectJAdviceParameterNameDiscovererfails against ambiguity #34609 - SseBuilder in ServerResponse should allow empty comment #34608
 - MockServerWebExchange does not allow setting the ApplicationContext on the base class #34601
 FormHttpMessageConvertershould throwHttpMessageNotReadableExceptionwhen the http form data is invalid #34594- Provide a method to retrieve all singleton autowire candidates from the bean factory #34591
 
π Bug Fixes
- 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
 
π Documentation
MvcUriComponentsBuilderjavadocs 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#uriDecodeJavadoc #34590 
π¨ Dependency Upgrades
- Upgrade to ASM 9.8 (for early Java 25 support) #34600
 
β€οΈ Contributors
Thank you to all the contributors who worked on this release: