Skip to content

Releases: spring-projects/spring-framework

v6.2.0-RC3

24 Oct 09:22
Compare
Choose a tag to compare
v6.2.0-RC3 Pre-release
Pre-release

⭐ New Features

  • Update retrieve() in RestClient to execute and extract in single scope #33777
  • Remove proxyTargetAware attribute from @MockitoSpyBean #33775
  • PathMatchingResourcePatternResolver sorting of JAR resources #33771
  • Add default handling for disconnected client errors to Spring MVC #33763
  • Remove ServerResponse.AsyncBuilder interface #33736
  • Fix PathMatchingResourcePatternResolver manifest classpath discovery #33705
  • Add cookie support to RestClient #33697

🐞 Bug Fixes

  • @MockitoSpyBean does not support transparent verification #33774
  • Bean with defaultCandidate = false and qualifier does not work with constructor injection #33762
  • Update HttpHeaders.setHost() to actually remove the Host header #33716

πŸ“” Documentation

  • Rework links to Spring Boot docs in reference documentation #33776
  • Add Kotlin examples in aot.adoc #33761
  • Improve the discoverability of Java and Kotlin APIs documentation from the refdoc #32835

❀️ Contributors

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

@Nicklas2751, @bivo, @philwebb, and @roll-w

v6.2.0-RC2

17 Oct 11:34
Compare
Choose a tag to compare
v6.2.0-RC2 Pre-release
Pre-release

⭐ New Features

  • Verify static resource location ends on slash #33712
  • Support record canonical constructor in BeanUtils #33707
  • Rename OverrideMetadata for Bean Overrides #33702
  • Rename BeanOverrideStrategy enum constants #33701
  • Polish ServletWebRequest #33698
  • Remove support for relative paths in static resource handling #33687
  • Add value attribute alias to @MockitoBean and @MockitoSpyBean #33680
  • Reject bean names with factory prefix for Bean Overrides #33674
  • Revise handling of URI variable syntax in WhatWG URL parser #33673
  • Introspect pre-registered singletons in preDetermineBeanTypes as well #33668
  • Remove unnecessary array length check #33655
  • Polish CorsConfiguration #33650
  • Add URL Parser for RFC 3986 #33639
  • Handle X-Forwarded-Prefix parsed by Reactor-Netty in ReactorServerHttpRequest #33638
  • RestClient should auto-detect ReactorClientHttpRequestFactory #33635
  • Improve random source in SockJS support #33632
  • Stop replacing existing Bean Override definitions with pseudo-definitions #33627
  • Introduce enforceOverride flag in @TestBean and @MockitoBean #33613
  • Refactor unwrapOptional method to improve readability and performance #33612
  • ServerSentEvent should implement equals() and hashCode() #33606
  • Reduce the GC pressure due to NoTransactionInContextException instances #33601
  • Make DynamicPropertyRegistrarBeanInitializer public #33593
  • Improve toString() for AbstractBeanDefinition and BeanMetadataAttribute #33579
  • Add utility methods for resource handler checks #33574
  • UrlHandlerFilter should not strip the trailing slash from the contextPath URL #33565
  • AbstractGenericHttpMessageConverter has no constructor taking a Charset #33563
  • JdbcClient ResultQuerySpec - Provide a optionalValue() method #33560
  • Add read timeout setter on HttpComponentsClientHttpRequestFactory #33556
  • Fix virtual thread pinning caused by synchronized blocks in EclipseLinkJpaDialect #33546
  • Add RestClient.Builder#messageConverters(List) #33536
  • Refine null-safety for additional Assert methods #33530
  • Throw runtime error for @TransactionalEventListener when @Transactional propagation level is not REQUIRES_NEW or NOT_SUPPORTED #33470
  • With virtual threads enabled, long-running fixedDelay tasks block fixedRate tasks #33408
  • Provide a public mechanism for detecting if AOT processing is in progress #33388
  • Use only one request timeout mechanism in JdkClientHttpRequest #33090
  • Support bean override features with AOT and native image #32933
  • Limit reflective operations in BeanInstanceSupplier with Spring AOT #32834
  • Mixin created with IntroductionInterceptor results in dynamic proxy instead of CGLIB proxy #31304
  • Lenient URI parsing in ServletServerHttpRequest #30489
  • Exclude authorization messages from ERROR logging in StompSubProtocolHandler #28252
  • Propagate fully capable ServletContext in AbstractContextLoaderInitializer (for SessionCookieConfig access) #22319

🐞 Bug Fixes

  • PropertySourcesPropertyResolver no longer converts to non CharSequence types #33727
  • Lower-casing of scheme in UriComponentsBuilder breaks use of URI variables #33699
  • Remove @MockitoBeanSettings and support for MockitoSession management #33692
  • @MockitoBeanSettings is not inherited in @Nested test class #33685
  • AOT fails when generating code for a component declared as an inner-class #33683
  • @MockitoBean reset and MockitoSession management do not work with @Nested tests #33676
  • DurationFormatterUtils should not attempt to parse an empty duration #33669
  • DefaultServerHttpRequestBuilder can create case-sensitive Headers instances #33666
  • Context cache is broken if two Bean Override fields declare annotations in different order #33633
  • Test bean override support should only override singletons #33602
  • Kotlin checked exception thrown from proxy service causes UndeclaredThrowableException #33585
  • Autowiring of generic beans with array types is broken since 6.2.0-M1 #33535
  • AnnotatedBeanDefinitionReader should respect @Fallback qualifier analogous to @Primary #33533

πŸ“” Documentation

  • Add Javadoc since for headers() in Delete/Patch/Post/PutExchange #33723
  • Document XML parser usage against security false positives #33713
  • Update scheduling.adoc #33709
  • Document TestExecutionListener implementations introduced in 6.2 #33661
  • Replace RFC 7807 with RFC 9457 in documentation #33594
  • Document that TestContextAnnotationUtils is required for proper @Nested test class support #33586
  • Replace e.g. with for example #33515
  • Document non-default candidate beans and Java-based configuration of non-autowire candidate beans #33392

πŸ”¨ Dependency Upgrades

  • Upgrade to Jackson 2.18 #33615
  • Upgrade to Micrometer 1.14.0-RC1 #33648
  • Upgrade to Reactor 2024.0.0-RC1 #33636

❀️ Contributors

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

@EugeneNik, @J-unStiN, @Jaeyoung22, @Seungpang, @SungbinYang, @TAKETODAY, @boulce, @cfredri4, @chemicL, @chschu, @cmagnuson, @izeye, @khyojun, @kimjuke, @ngocnhan-tran1996, @quaff, @smartandhandsome, and @zinzoddari

v6.1.14

17 Oct 08:23
Compare
Choose a tag to compare

⭐ New Features

  • Use Locale.ROOT for locale neutral, case insensitive comparisons #33708
  • Improve checks for relative paths in static resource handling #33689
  • CorsUtils.isCorsRequest throws unhandled IllegalArgumentException and returns 500 Internal Server Error on malfomed Origin header #33682
  • Skip processing of Java annotations in QualifierAnnotationAutowireCandidateResolver #33580
  • Include argument name in MethodArgumentTypeMismatchException error message #33573
  • Preserve coroutine context in WebClientExtensions #33548
  • Blocking call detected in ConcurrentReferenceHashMap by BlockHound #33450
  • Warning message about bean post-processing and eager injection may suggest the wrong cause #33184

🐞 Bug Fixes

  • DelegatingFilterProxy Causes Pinned Virtual Threads #33656
  • Potential NPE from MethodParameter.getMethod() check in KotlinDelegate.hasDefaultValue() #33609
  • Missing native image hints for JDK proxies created by JMS connection factories #33590
  • AotTestExecutionListener should not be invoked for a @DisabledInAotMode test class #33589
  • Use encoded resource path instead of input path validation in spring-webflux #33568
  • org.springframework.util.ResourceUtils#toRelativeURL drops custom URLStreamHandler #33561
  • Current observation not in scope during WebClient ExchangeFilterFunction execution #33559
  • ZoneIdEditor throws wrong exception type for TypeConverterSupport #33545
  • MimeMessageHelper addInline with ByteArrayResource fail with null filename #33527
  • @Cacheable throws NullPointerException when RuntimeException is thrown inside annotated code #33492
  • Path variable values missing in RedirectView when PathPattern are used #33422
  • Reactive HttpComponentsClientHttpResponse ignores Expires cookie attribute #33157

πŸ“” Documentation

  • Update fallback.adoc #33721
  • Update scheduling.adoc #33703
  • Fix link in testing/support-jdbc.adoc #33686
  • Adapt Javadoc note about log level of BeanPostProcessorChecker #33617
  • Reference the spring-framework-petclinic repository wich uses AspectJ #33539

πŸ”¨ Dependency Upgrades

  • Upgrade to Apache HttpClient 5.4 #33587
  • Upgrade to Apache HttpCore Reactive 5.3 #33588
  • Upgrade to Awaitility 4.2.2 #33604
  • Upgrade to Micrometer 1.12.11 #33647
  • Upgrade to Reactor 2023.0.11 #33637

❀️ Contributors

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

@arey, @asibross, @boulce, @drdpov, @hosamaly, @ilya40umov, @izeye, and @junhyeongkim2

v6.2.0-RC1

12 Sep 12:38
Compare
Choose a tag to compare
v6.2.0-RC1 Pre-release
Pre-release

⭐ New Features

  • Update mime.types and remove commented entries #33512
  • Provide access to the unexpanded URI template when using MockMvc #33509
  • Avoid empty array allocations in AnnotationTypeMapping #33507
  • Introduce DynamicPropertyRegistrar as a replacement for DynamicPropertyRegistry bean support #33501
  • Avoid storing duplicate empty array in MethodParameter field #33496
  • Avoid empty array allocations in ResolvableType #33473
  • Update Content-Length when body changed by Interceptor #33459
  • UrlHandlerFilter should not strip the trailing slash from root URLs #33444
  • Unwrap CGLIB proxy when invoking non-proxied methods in ReflectionTestUtils #33429
  • Refactor eTag formatting logic into a static utility method #33412
  • Encapsulate ETag comparison logic #33385
  • Harmonize Reactor client class names within the http.client package #33382
  • Allow multiple listeners on ResponseBodyEmitter #33356
  • Invoke init/destroy/SpEL methods via public declaring type whenever possible #33216
  • Create WebFlux equivalent filter to handle URLs with trailing slashes #32830
  • Provide more ways to stream through ServerResponse for WebMvc functional endpoints #32710
  • Avoid buffering all elements before sending JSON when using Flux/Flow + Kotlinx Serialization Encoder #33428

🐞 Bug Fixes

  • BeanCurrentlyInCreationException is thrown when multiple threads get a bean from StaticApplicationContext's Bean Factory #33463

πŸ“” Documentation

  • Revise reference documentation for Spring JMX annotations #33466
  • Add Javadoc since for ReflectionHints.registerForInterfaces() #33458
  • Revise AOP proxying section of the reference manual #33455
  • Consolidate self injection documentation in the reference manual #33454
  • Expand acronyms FQN and FQCN #33452
  • Document that WebFlux does not support forward redirects #33441
  • Document TaskDecorator usage with TaskExecutors #33438

πŸ”¨ Dependency Upgrades

  • Upgrade to JUnit 5.11 #33395
  • Upgrade to Micrometer 1.14.0-M3 #33520
  • Upgrade to Reactor 2024.0.0-M6 #33521

❀️ Contributors

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

@hyunmin0317, @imzhoukunqiang, @izeye, @kilink, @quaff, and @tafjwr

v6.1.13

12 Sep 12:02
Compare
Choose a tag to compare

⭐ New Features

  • Errors thrown from SmartLifeycle#stop results in (unnecessary) waiting for the shutdown timeout #33442
  • Updates to resource handling for functional endpoints #33434
  • Stop logging result in WebAsyncManager #33406
  • spring native not support method handler with kotlin default value #33384

🐞 Bug Fixes

  • BindingReflectionHintsRegistrar do not take into account the boxed type Boolean #33380
  • Ensure use of specified status code on redirect with Rendering #33498
  • Inconsistent handling of X-Forwarded-Prefix in servlet and reactive stack #33465
  • ServerHttpObservationFilter does not register against new async operations #33451
  • Revert removal of deprecated rawStatusCode methods #33440
  • PathMatchingResourcePatternResolver no longer follows symlinks #33424
  • Deadlock between SseEmitter and StandardServletAsyncWebRequest when clients disconnect #33421
  • RestClient doesn't open a scope for the processing of the request #33397
  • WebTestClient leaks when ParameterizedTypeReference is used #33389

πŸ“” Documentation

  • Document fixed rate scheduling with CRaC #33490
  • Update information in SpEL Evaluation chapter in reference manual #33456
  • Stop documenting use of -debug compiler flag in reference manual #33453
  • Use discrete headings instead of titled blocks in reference manual #33447
  • Fix example for @ImportResource in the reference manual #33446
  • Fix a typo in the CDS documentation #33437
  • Fix link to chapter introduction #33417
  • Improve documentation on reading form data via Servlet request parameters vs @RequestBody #33409

πŸ”¨ Dependency Upgrades

  • Upgrade to Kotlin 1.9.25 #33471
  • Upgrade to Micrometer 1.12.10 #33518
  • Upgrade to Objenesis 3.4 #33526
  • Upgrade to Reactor 2023.0.10 #33519

❀️ Contributors

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

@dancer1325, @izeye, and @yfoel

v6.2.0-M7

14 Aug 12:48
Compare
Choose a tag to compare
v6.2.0-M7 Pre-release
Pre-release

⭐ New Features

  • Improve optional parameter checks for HTTP Interface argument #33339
  • Two @Bean methods with the same bean name should consistently throw an exception #33330
  • Support static headers for http interface clients #33309
  • Add DatabaseClient bind variant for list of positioned parameters #33274
  • HandlerMethodValidator should support simple Cross-Parameter constraints #33271
  • UserCredentialsConnectionFactoryAdapter should provide credentials to createContext #33270
  • Support flexible multi-unit duration format in @DurationFormat #33262
  • MockMvc should prepare a FilterRegistration when initializing filters #33252
  • Add option to ignore bean registration with AOT #33243
  • Support JAXBElement in Jaxb2RootElementHttpMessageConverter #33233
  • MimeMessageHelper does not set filename on inline MimeBodyPart #33230
  • Add handling for AsyncRequestNotUsableException to ResponseEntityExceptionHandler #33225
  • Allow formatting of Collection values for @RequestParam with HTTP interface client #33220
  • Support rendering stream of fragments #33194
  • Allow resolving nested placeholders if value is not String but CharSequence #32876
  • Support multiple style of parsing/printing Durations #30396
  • Restore support for Freemarker request parameters and taglibs now that it supports Jakarta #30186
  • AOT/native support when registering beans with the Kotlin DSL #29555
  • Offer a way for MockitoTestExecutionListener to enable strict stubbing #33318
  • Provide access to all counters in case of BatchUpdateException with multiple batches #23867
  • Low level cache failure for sync/reactive/future Cacheable get is not handled by CacheErrorHandler #21590

🐞 Bug Fixes

  • Programmatic NoUniqueBeanDefinitionException in CacheAspectSupport should match message structure #33305
  • JdbcClient.MappedQuerySpec::single can return null #33300
  • Registration of DynamicPropertyRegistry in a test context has broken native testing #33272
  • MapAccessor#canWrite incorrectly returns true for non-Map target #33265
  • BeanDefinition processed by AOT does not keep fallback flag #33261
  • ImportSelector#getExclusionFilter does not exclude matching candidates with import selector #27080

πŸ“” Documentation

  • Document that SpEL expressions using bean references are not compilable #33363
  • Remove duplicated "the" in Javadoc #33308
  • Update documentation for fragment rendering #33195
  • Document ControllerAdviceBean as internal usage #32776

πŸ”¨ Dependency Upgrades

  • Upgrade to Micrometer 1.14.0-M2 #33327
  • Upgrade to Reactor 2024.0.0-M5 #33328

❀️ Contributors

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

@OlgaMaciaszek, @benelog, @deblockt, @doljae, @izeye, @quaff, and @zinzoddari

v6.1.12

14 Aug 11:13
Compare
Choose a tag to compare

⭐ New Features

  • Efficient handling of conditional HTTP requests #33372
  • LocaleEditor cannot parse language tag with script like zh-Hans #33348
  • Reinstate qualifier support for legacy JSR-330 @javax.inject.Named annotation #33345
  • SimpleAsyncTaskScheduler stops accepting new tasks when isShutdown #33336

🐞 Bug Fixes

  • Fix incorrect weak ETag validation #33374
  • Avoid CacheAspectSupport#findInCaches falling through to the reactiveCachingHandler #33371
  • ScheduledAnnotationReactiveSupport starts the observation before it is opened #33349
  • RestClient observation flags error for UnknownContentTypeException twice #33347
  • RestClient instrumentation unnecessarily calls stop on a closed observation #33346
  • SimpleEvaluationContext does not enforce read-only semantics #33319
  • SpEL wraps primitive array in Object[] when invoking varargs method #33317
  • SpEL no longer supports lists for varargs invocations #33315
  • SpEL Indexer silently ignores failure to set property as index #33310
  • AOT-generated code produces deprecation warnings when using a deprecated class for autowiring #33295
  • @Scheduled method in test class not supported anymore #33286
  • AOT-generated code produces deprecation warnings when referencing a nested class of a deprecated class #33273
  • Jaxb2XmlEncoder does not support JAXBElement subtypes #33258
  • ShallowEtagHeaderFilter throws a NumberFormatException for responses bigger than 2Gb #33256
  • RequestPredicates fail with UnsupportedOperationException with a custom servlet path #33251
  • Missing observation for @JmsListener response messages #33221
  • ConversionService cannot convert primitive array to Object[] #33212
  • Spring coroutines AOP is not compatible with @Cacheable #33210
  • PathMatchingResourcePatternResolver#convertClassLoaderURL drops URLStreamHandler in version 6.1.x #33199
  • SpEL cannot invoke varargs MethodHandle function with a primitive array #33198
  • Trim last allowed origin when parsing comma-delimited string #33181
  • Multipart files not deleted after upload is finished with async request #33161
  • JaxbContextContainer does not define the ClassLoader to use to retrieve the JAXBContext to use #33158
  • Memory Leak in WebFlux application handling HTTP Multipart #33094
  • Support invoking bridged suspending functions in AopUtils #33045

πŸ“” Documentation

  • Fix typo in the bean validation section of the reference manual #33354
  • Fix syntax error in RestClient documentation #33350
  • Add Kotlin example for expectAll() #33341
  • Javadoc of ReactorResourceFactory#setConnectionProviderSupplier wrongly states it can be ignored #33338
  • Improve EnableCaching & CachingConfigurer Javadoc #33288
  • Code sample has wrong reference to configurePathMatching #33277
  • Document that NoOpResponseErrorHandler is to be used with the RestTemplate #33276
  • Stop referring to Oracle STRUCT and ARRAY as they are deprecated #33248
  • Update links in reference manual #33245

πŸ”¨ Dependency Upgrades

  • Upgrade to Micrometer 1.12.9 #33325
  • Upgrade to Reactor 2023.0.9 #33326

❀️ Contributors

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

@GoncaloPT, @crusherd, @genuss, @kashike, @ngocnhan-tran1996, @olbinski, @pcvolkmer, @sheip9, @tafjwr, and @underbell

v6.0.23

14 Aug 10:25
Compare
Choose a tag to compare

⭐ New Features

  • Efficient handling of conditional HTTP requests #33379

🐞 Bug Fixes

  • Fix incorrect weak ETag validation #33376
  • SimpleEvaluationContext does not enforce read-only semantics #33321
  • ConversionService cannot convert primitive array to Object[] #33313
  • SpEL Indexer silently ignores failure to set property as index #33311
  • Nested bean instance supplier invocation does not retain previous factory method #33185
  • Mockito mock falsely initialized as CGLIB proxy with AspectJ aspect #33141
  • "file:." cannot be resolved to java.nio.file.Path (and plain "." value resolves to classpath root) #33139
  • Trace and Span IDs are no longer propagated RequestBodyAdvice beans #33128
  • ConfigurationClassEnhancer does not use correct ClassLoader when called multiple times #33029

πŸ“” Documentation

  • Typo in Annotation-driven Listener Endpoints section of Spring Framework documentation #33054
  • Container Extension Points section of Spring Framework documentation refers to the wrong property name #33038
  • Incorrect constructor details in the javadoc for ApplicationContextEvent #33033

πŸ”¨ Dependency Upgrades

  • Upgrade to Reactor 2022.0.22 #33324

v5.3.39

14 Aug 09:18
Compare
Choose a tag to compare

⭐ New Features

  • SimpleEvaluationContext should disable array allocation #33386

v5.3.38

14 Aug 06:59
Compare
Choose a tag to compare

⭐ New Features

  • Efficient handling of conditional HTTP requests #33378

🐞 Bug Fixes

  • Fix incorrect weak ETag validation #33377
  • SimpleEvaluationContext does not enforce read-only semantics #33320
  • ConversionService cannot convert primitive array to Object[] #33314
  • SpEL Indexer silently ignores failure to set property as index #33312
  • Mockito mock falsely initialized as CGLIB proxy with AspectJ aspect #33142
  • "file:." cannot be resolved to java.nio.file.Path (and plain "." value resolves to classpath root) #33140

πŸ“” Documentation

  • Typo in Annotation-driven Listener Endpoints section of Spring Framework documentation #33052
  • Container Extension Points section of Spring Framework documentation refers to the wrong property name #33039
  • Incorrect constructor details in the javadoc for ApplicationContextEvent #33034

πŸ”¨ Dependency Upgrades

  • Upgrade to Reactor 2020.0.47 #33322