Releases: spring-projects/spring-framework
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:
v7.0.0-M3
β New Features
- 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
π Bug Fixes
- Upgrade match check in WebSocketHandlerMapping does not work if handler mapped to
"/*"
#34503
π Documentation
- Refine Kotlin serialization reference documentation #34437
π¨ Dependency Upgrades
- Upgrade to Reactor 2025.0.0-M1 #34577
β€οΈ Contributors
Thank you to all the contributors who worked on this release:
v6.2.4
β New Features
- 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
π Bug Fixes
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
π Documentation
- 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
π¨ Dependency Upgrades
β€οΈ Contributors
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
β New Features
- Avoid unnecessary CGLIB processing on configuration classes #34487
- Inconsistent default class loaders in hint classes #34473
π Bug Fixes
- 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
π Documentation
- Fix broken antora task #34455
π¨ Dependency Upgrades
- Upgrade to Reactor 2023.0.16 #34579