Skip to content

Releases: spring-projects/spring-framework

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

🐞 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

  • 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

v6.2.0-M6

18 Jul 13:01
Compare
Choose a tag to compare
v6.2.0-M6 Pre-release
Pre-release

⭐ New Features

  • Initialize RequestPath on demand in AbstractServerHttpRequest #33227
  • Add support for making MapAccessor read-only #33222
  • DefaultPartHttpMessageReader should not instantiate Reactor Scheduler eagerly #33218
  • Change MIME type mapping for JavaScript to text/javascript #33197
  • Handle SimpleAsyncTaskExecutor in WebSocketMessageBrokerStats #33104
  • Support way to extract ConstraintViolation from HandlerMethodValidationException #33025

🐞 Bug Fixes

  • AssertJ support for multipart does not set property content type on the request #33232
  • MockMvc builders are not source and binary compatible with previous 6.x generations #33229
  • __BeanFactoryRegistrations generated file can be too large with a BeanFactory with lots of bean definitions #33126

❤️ Contributors

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

@quaff

v6.2.0-M5

11 Jul 09:13
Compare
Choose a tag to compare
v6.2.0-M5 Pre-release
Pre-release

⭐ New Features

  • Harmonize handling of current factory method in SimpleInstantiationStrategy #33192
  • Unwrap InvocationTargetException in SpEL's FunctionReference #33174
  • Support rendering multiple fragments #33162
  • Allow MessageHeaderAccessor to be created with existing headers #33153
  • Generalize message conversion for HTTP message content in AssertJ support #33148
  • Allow arbitrary packages to be scanned for Reflective usage #33132
  • Support external methods referenced by fully-qualified name in @TestBean #33125
  • Update Content-Type based on encoding in MVC FreeMarkerView #33119
  • Introduce SmartHttpMessageConverter #33118
  • Support property placeholders in @Sql script paths #33114
  • Reject ModelMap argument types in WebFlux #33109
  • Set output_encoding in FreeMarkerView implementations #33106
  • Allow encoding to be set with a Charset in FreeMarker support #33102
  • Let custom ObjectProvider implementations declare a single method only #33070
  • Add support for running assertions on resolved exception in MockMvcTester #33060
  • Add dedicated support for printing the MvcResult in MockMvcTester #33059
  • Provide a way to determine if a context is in the process of being closed #33058
  • MockHttpServletRequestBuilder should merge URI from the parent if necessary #33057
  • Fail fast if a @Bean method declares @Autowired as well #33051
  • Add dedicated async dispatch support for MockMvcTester #33040
  • Add dedicated multipart support for MockMvcTester #33027
  • spring-form JSP tags should escape HTML value based on response character encoding #33023
  • SimpleClientHttpResponse throws IOException when response body is empty and status code is >= 400 #33020
  • MockHttpServletResponse defaults to ISO-8859-1 for JSON while the rest of the framework defaults to UTF-8 #33019
  • Propagate context to message converters when streaming with Flux in Spring MVC #32813
  • Resolve URI to baseUrl in RestClient #32679
  • Constructor data binding support for List, Map and array arguments #32426
  • Implement Eclipse Jetty core HTTP handler adapter #32097
  • Add better control over generated files registration #31331
  • Provide more declarative control over reflection hint registration #29194
  • Replace @Nonnull(when = When.MAYBE) by @CheckForNull in @Nullable #27183
  • Add JSON support to Protobuf codecs #25457

🐞 Bug Fixes

  • AntPathPatternMatcher hardcoded "/" separator in variables matching and comparator #33085
  • AOT generates a raw type for a generic type with nested unresolved generics #33069
  • Unwrap Kotlin inline value classes return values #33026
  • Kotlin Serialization support does not take null-safety into account #33016

📔 Documentation

  • Move Testing below other framework concerns in the reference documentation TOC #33083
  • Move Servlet HTTP Message Conversion to its own section #33063
  • Document AssertJ support for MockMvc #32454

🔨 Dependency Upgrades

  • Upgrade to HtmlUnit 4.2.0 #33081
  • Upgrade to Kotlin Coroutines 1.8.1 #33176
  • Upgrade to Micrometer 1.14.0-M1 #33170
  • Upgrade to Reactor 2024.0.0-M4 #33171

❤️ Contributors

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

@gregw, @stonio, and @tafjwr

v6.1.11

11 Jul 08:06
Compare
Choose a tag to compare

⭐ New Features

  • Ensure varargs component type for MethodHandle is not null in SpEL's ReflectionHelper #33193
  • Confusing WebClient exception message in case of Reactor-Netty PrematureCloseException during response #33127
  • Include the bean name in the exception when an invalid factoryBeanObjectType attribute is found #33117
  • Use error handler for reactive cache aspect #33073
  • getTypeForFactoryMethod should catch NoClassDefFoundError #33075

🐞 Bug Fixes

  • SpEL cannot invoke varargs MethodHandle function with an array #33191
  • SpEL cannot invoke varargs MethodHandle function with zero variable arguments #33190
  • Nested bean instance supplier invocation does not retain previous factory method #33180
  • DefaultErrorResponseBuilder does not implement headers(Consumer) #33156
  • Fix adaptation of violations on Set method parameter #33150
  • Web controller call with invalid body resulting in 500 instead of 400 when using kotlinx-serialization #33138
  • "file:." cannot be resolved to java.nio.file.Path (and plain "." value resolves to classpath root) #33124
  • Mockito mock falsely initialized as CGLIB proxy with AspectJ aspect #33113
  • Fix ClassCastException from return value validation with proxy when adaptConstraintViolations=true #33105
  • Spring coroutines AOP is not compatible with @Transactional #33095
  • ReactorClientHttpConnector creates new HttpClient for every request #33093
  • Trace and Span IDs are no longer propagated RequestBodyAdvice beans #33091
  • Early LocalContainerEntityManagerFactoryBean initialization fails in case of null bean definition #33082
  • ReactorNettyClientRequest.convertException should include original exception if cause is null #33080
  • SpEL incorrectly splits string arguments by comma for Object... varargs method #33013
  • ProtobufMessageConverter fails to parse JSON payload if byte array is used #27408

📔 Documentation

  • Harmonize phrasing in URI Encoding section #33166
  • Document that ModelMap is not a supported argument type in WebFlux #33107
  • Example in Method Injection section of Spring Framework documentation refers to wrong bean names #33096
  • Resource writer doesn't consider subclasses of InputStreamResource for content length bypass #33089
  • Improve documentation regarding encoding in FreeMarker support #33071
  • Exception for validation failure in WebFlux does not match the documentation #33061

🔨 Dependency Upgrades

  • Upgrade to Kotlin 1.9.24 #33177
  • Upgrade to Kotlin Serialization 1.6.3 #33175
  • Upgrade to Micrometer 1.12.8 #33168
  • Upgrade to Reactor 2023.0.8 #33169

❤️ Contributors

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

@TAKETODAY, @hunhee98, @imvtsl, @snussbaumer, and @zizare