Skip to content

Releases: spring-projects/spring-framework

v7.0.0-M6

12 Jun 10:22
Compare
Choose a tag to compare
v7.0.0-M6 Pre-release
Pre-release

⭐ New Features

  • Allow FixedBackOff to be constructed with only a custom interval #35028
  • Use String.replace in MetadataEncoder #35025
  • Revise @Nullable declarations for contains*() methods in CollectionUtils #35023
  • Introduce JacksonJsonMessageConverter.getObjectMapper() #34963
  • Remove (String, String) variants of setProperty() and withProperty() from MockEnvironment #34948
  • Allow access to env from SupplierContextDsl #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 for quote and getFilename in StringUtils #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 for SupplierUtils.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() and getFilenameExtension() in StringUtils #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

12 Jun 09:42
Compare
Choose a tag to compare

⭐ New Features

  • Nullability @Contract declaration for CodeFlow.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 in MessageHeaderAccessor #34949
  • MockEnvironment does not accept Object property values #34947
  • PropertySourcesPlaceholderConfigurer no longer uses ConversionService from Environment #34936
  • @Contract for StreamUtils.drain() incorrectly declares null 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

12 Jun 08:55
Compare
Choose a tag to compare

🐞 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

15 May 10:31
Compare
Choose a tag to compare
v7.0.0-M5 Pre-release
Pre-release

⭐ New Features

  • Deprecate PropertyPlaceholderConfigurer and PreferencesPlaceholderConfigurer 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

15 May 09:06
Compare
Choose a tag to compare

⭐ 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 that target/classes always exists #34764

πŸ“” Documentation

  • Clarify CompositePropertySource behavior for EnumerablePropertySource contract #34886
  • Javadoc and @Nullable annotation for servletContext parameter of ConfigurableWebEnvironment.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

  • Upgrade to Micrometer 1.14.7 #34889
  • Upgrade to Reactor 2024.0.6 #34898

❀️ Contributors

Thank you to all the contributors who worked on this release:

@Artur-, @blake-bauman, @iifawzi, @kilink, @quaff, @whlit, and @zzoe2346

v6.1.20

15 May 08:27
Compare
Choose a tag to compare

⭐ 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 for EnumerablePropertySource contract #34887

πŸ”¨ Dependency Upgrades

  • Upgrade to Reactor 2023.0.18 #34899

v7.0.0-M4

17 Apr 09:35
Compare
Choose a tag to compare
v7.0.0-M4 Pre-release
Pre-release

⭐ New Features

  • Make BeanDefinitionPropertyValueCodeGeneratorDelegates public #34761
  • Add AOT support for Registry of HTTP Interface Proxies #34750
  • Make HttpServiceGroupConfigurer extend Ordered. #34739
  • Introduce queryParamCount() in MockRestRequestMatchers #34703
  • Add method level callback for HttpRequestValues initialization #34699
  • Refine UriUtils#decode and StringUtils#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 in BeanRegistrar #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 the CoExchangeFilterFunction #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 to ConversionService 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

17 Apr 07:49
Compare
Choose a tag to compare

⭐ 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 to RestClient #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 nested PropertyAccessExceptions 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 be abstract 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() in AbstractAutowireCapableBeanFactory #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

17 Apr 07:10
Compare
Choose a tag to compare

⭐ New Features

  • Suggest compilation with -parameters when AspectJAdviceParameterNameDiscoverer fails against ambiguity #34618

🐞 Bug Fixes

  • PropertyBatchUpdateException: causes of nested PropertyAccessExceptions 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 be abstract without @Bean methods #34689
  • Generated-code for LinkedHashMap is missing static keyword #34661
  • AbstractReactiveTransactionManager throws IllegalStateException when rollback fails after commit attempt #34619

πŸ“” Documentation

  • Add javadoc notes on potential exception suppression in ListableBeanFactory#getBeansOfType #34631
  • Remove remaining references to Forwarded headers in MvcUriComponentsBuilder #34626
  • MvcUriComponentsBuilder javadocs inaccurately reflects usage of forwarded headers #34620

v6.2.5

19 Mar 20:08
Compare
Choose a tag to compare

⭐ New Features

  • Make dependencies on AssertJ and JUnit in spring-core-test optional #34612
  • Suggest compilation with -parameters when AspectJAdviceParameterNameDiscoverer 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 throw HttpMessageNotReadableException 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:

@Helmsdown, @dmitrysulman, and @ngocnhan-tran1996