Releases: spring-projects/spring-framework
v7.0.0-M6
β New Features
- Allow
FixedBackOff
to be constructed with only a custom interval #35028 - Use String.replace in MetadataEncoder #35025
- Revise
@Nullable
declarations forcontains*()
methods inCollectionUtils
#35023 - Introduce
JacksonJsonMessageConverter.getObjectMapper()
#34963 - Remove
(String, String)
variants ofsetProperty()
andwithProperty()
fromMockEnvironment
#34948 - Allow access to
env
fromSupplierContextDsl
#34943 - Consistently declare nullability
@Contract
for core utilities #34934 - Update HttpServiceGroupConfigurer API #34926
- Make
ProblemDetailJacksonXmlMixin
compatible with Jackson 3 #34925 - Introduce hints in
RestClient
API #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
@Contract
forquote
andgetFilename
inStringUtils
#34896 - Support
@Import
on 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
@Contract
forSupplierUtils.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
since
attributes for@Deprecated
declarations #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
@Contract
declaration 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
BeanDefinitionReader
via@ImportResource
#34928 - Make max size for pattern cache in
PathPatternMatchableHandlerMapping
configurable #34918 - Add optimized DataBufferInputStream overrides #34799
π Bug Fixes
- Encode non-printable character in Content-Disposition parameter #35034
- Allow update of existing
WebSession
after 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_CHANNEL
header check inMessageHeaderAccessor
#34949 MockEnvironment
does not acceptObject
property values #34947PropertySourcesPlaceholderConfigurer
no longer usesConversionService
fromEnvironment
#34936@Contract
forStreamUtils.drain()
incorrectly declaresnull
results in an exception #34933- Inconsistent behavior injecting null
@Bean
factory 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#setHeaders
JavaDoc #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
@SqlGroup
example #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
@RestControllerAdvice
vs@ControllerAdvice
apply 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
WebSession
after 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
PropertyPlaceholderConfigurer
andPreferencesPlaceholderConfigurer
for 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#getObjectMappersForType
nullness #34811 - Add option for case-insensitive match to PatternMatchUtils #34801
- RestClient
@RequestBody
parameters 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
PropertySourcesPlaceholderConfigurer
placeholder 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
BeanOverrideHandler
discovered in@Nested
test 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
NamedParameterUtils
only expands reused collection parameter once #34768 PathMatchingResourcePatternResolver
wrongly assumes thattarget/classes
always exists #34764
π Documentation
- Clarify
CompositePropertySource
behavior forEnumerablePropertySource
contract #34886 - Javadoc and
@Nullable
annotation forservletContext
parameter ofConfigurableWebEnvironment.initPropertySources
are contradictory #34845 - Spring MVC:
@EnableAsync
needs 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
CompositePropertySource
behavior forEnumerablePropertySource
contract #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#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
π Documentation
- 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
π¨ 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
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
π 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 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
π 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
-parameters
whenAspectJAdviceParameterNameDiscoverer
fails against ambiguity #34618
π Bug Fixes
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
π Documentation
v6.2.5
β New Features
- 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
π 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
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
π¨ 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: