Skip to content

Releases: spring-projects/spring-framework

v7.0.7

17 Apr 07:06

Choose a tag to compare

⭐ New Features

  • Improve SpringValidatorAdapter and MethodValidationAdapter performance #36621
  • Support JSON array decoding to Flux in KotlinSerializationJsonDecoder #36597
  • Deprecate methodIdentification() in CacheAspectSupport for removal #36575
  • Add MockRestServiceServer#createServer variant for RestClient #36572
  • Create RestClientXhrTransport variant replacing RestTemplateXhrTransport #36566
  • Improve error handling in multipart codecs #36563
  • Make ApplicationListenerMethodAdapter#getTargetMethod() public #36558
  • ApiVersionConfigurer.setSupportedVersionPredicate() returns void instead of ApiVersionConfigurer #36551
  • LazyConnectionDataSourceProxy does not work well with Hibernate's multi-tenancy by schema strategy #36527
  • Add registerManagedResource variant with bean key argument to MBeanExporter #36520
  • Handle blank Accept-Language header in AcceptHeaderLocaleResolver #36513
  • Make AbstractStreamingClientHttpRequest and AbstractBufferingClientHttpRequest public #36501
  • MySQL Error 149 (Galera/WSREP conflict) not translated to ConcurrencyFailureException in Spring JDBC/ORM #36499
  • Add PreFlightRequestFilter #36482
  • Support configuration of extension context scope for SpringExtension via Spring or JUnit properties #36460
  • Lower log level of "Cache miss for REQUEST dispatch" in HandlerMappingIntrospector #36309

🐞 Bug Fixes

  • WebDataBinder unnecessarily instantiates collections when using the "!" and "_" prefixes #36625
  • Cache pollution from high-cardinality FieldError default messages in MessageSourceSupport #36609
  • MergedAnnotation does not use ClassLoader for method or field #36606
  • @Sql fails if DataSource is wrapped in a TransactionAwareDataSourceProxy #36611
  • AnnotatedTypeMetadata no longer retains source declaration order on Java 24+ #36598
  • MergedAnnotation.asMap() fails when an attribute references a non-existent class #36586
  • FileSystemResource does not strictly follow the Resource#isReadable() contract #36584
  • Converter overrides in HttpMessageConverters only apply when defaults are registered #36579
  • Invalid method return type metadata for ClassFile variant on JDK 24+ #36577
  • Fix Writer lifecycle for AbstractJsonHttpMessageConverter.writeInternal(Object, Type, Writer) #36565
  • Flushing-related regression in SseServerResponse #36537
  • LazyConnectionDataSourceProxy does not pass on holdability to target Connection #36528
  • AnnotationBeanNameGenerator fails when an annotation references a non-existent class #36524
  • Perserve default API version in RestClientAdapter #36514
  • Inconsistent codings resolution in resource resolvers #36507
  • DefaultJmsListenerContainer may hang in an endless loop in doShutdown #36506
  • Query not hidden in DefaultClientResponse checkpoint #36502
  • RestClient closes stream for ResponseEntity responses #36492
  • IllegalStateException when using websocket handshake headers with Tomcat #36486
  • Invalid nullness information for ParameterizedTypeReference #36477
  • WebTestClient cannot assert null list elements #36476
  • Handle Kotlin nullable value class param correctly in CoroutineUtils #36449
  • Remove RFC 2047 encoding from Content-Disposition filename #36328
  • Parent traceId is not reused when calling WebClient.awaitExchange function #36182

πŸ“” Documentation

  • Clarify semantics of HttpMethod.valueOf() #36652
  • Document whitespace semantics in SpEL expressions #36628
  • Document that spring.profiles.active is ignored by @ActiveProfiles #36600
  • MergedAnnotation.asAnnotationAttributes() Javadoc incorrectly states that it creates an immutable map #36567
  • Fix incorrect Javadoc in HandlerMethodReturnValueHandlerComposite regarding caching #36555
  • Fix incorrect method name in TypeDescriptor.array() Javadoc #36549
  • Introduce Kotlin examples for Bean Overrides (@MockitoBean, etc.) #36541
  • Fix incorrect cross-reference links in AbstractEnvironment Javadoc #36516
  • Document RetryTemplate#invoke variants in reference manual #36452
  • Link observability section to Micrometer Observation Handler docs #34994

πŸ”¨ Dependency Upgrades

  • Upgrade to Micrometer 1.16.5 #36659
  • Upgrade to Reactor 2025.0.5 #36658

❀️ Contributors

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

@Mohak-Nagaraju, @Sineaggi, @T45K, @angry-2k, @bebeis, @cookie-meringue, @dmitrysulman, @elgunshukurov, @itsmevichu, @junhyung8795, @msridhar, @nameearly, @tobifasc, and @xxxxxxjun

v6.2.18

17 Apr 07:06

Choose a tag to compare

⭐ New Features

  • Improve SpringValidatorAdapter and MethodValidationAdapter performance #36624
  • Add missing @Deprecated(forRemoval = true) for deleted in 7.0 #36591
  • Deprecate methodIdentification() in CacheAspectSupport for removal #36576
  • Improve error handling in multipart codecs #36564
  • LazyConnectionDataSourceProxy does not work well with Hibernate's multi-tenancy by schema strategy #36529
  • MySQL Error 149 (Galera/WSREP conflict) not translated to ConcurrencyFailureException in Spring JDBC/ORM #36510

🐞 Bug Fixes

  • Handle Kotlin nullable value class param correctly in CoroutineUtils #36643
  • NullPointerException in ServerSentEvent when trying to set id or event properties #36634
  • @Sql fails if DataSource is wrapped in a TransactionAwareDataSourceProxy #36630
  • WebDataBinder unnecessarily instantiates collections when using the "!" and "_" prefixes #36627
  • Cache pollution from high-cardinality FieldError default messages in MessageSourceSupport #36623
  • ContentCachingRequestWrapper does not allow unlimited content caching #36620
  • MergedAnnotation does not use ClassLoader for method or field #36614
  • AnnotationBeanNameGenerator fails when an annotation references a non-existent class #36588
  • FileSystemResource does not strictly follow the Resource#isReadable() contract #36585
  • Query not hidden in DefaultClientResponse checkpoint #36571
  • LazyConnectionDataSourceProxy does not pass on holdability to target Connection #36530
  • DefaultJmsListenerContainer may hang in an endless loop in doShutdown #36511
  • Inconsistent codings resolution in resource resolvers #36508

πŸ“” Documentation

  • Clarify semantics of HttpMethod.valueOf() #36653
  • Document that spring.profiles.active is ignored by @ActiveProfiles #36636
  • Document whitespace semantics in SpEL expressions #36629
  • MergedAnnotation.asAnnotationAttributes() Javadoc incorrectly states that it creates an immutable map #36568
  • Introduce Kotlin examples for Bean Overrides (@MockitoBean, etc.) #36542
  • Fix incorrect cross-reference links in AbstractEnvironment Javadoc #36517

πŸ”¨ Dependency Upgrades

  • Upgrade to Micrometer 1.15.11 #36661
  • Upgrade to Reactor 2024.0.17 #36660

v7.0.6

13 Mar 08:27

Choose a tag to compare

⚠️ Attention Required

  • Log warning when default context configuration is ignored within test class hierarchies #36390
  • Ignore flush calls on ServletServerHttpResponse body outputstream #36385

⭐ New Features

  • Leverage ResourceHandlerUtils in ScriptTemplateView #36458
  • Restore ScriptTemplateViewTests #36456
  • Fix log message in ConfigurationClassBeanDefinitionReader #36453
  • DefaultResponseErrorHandler - setMessageConverters() not called via RestClient #36434
  • Resolve context initializers only once in AbstractTestContextBootstrapper #36430
  • Invoke resolveContextLoader() only once in AbstractTestContextBootstrapper #36425
  • Further align synthesized annotation toString() with modern JDKs #36417
  • Introduce setDefaultCharset() in AbstractResourceBasedMessageSource #36413
  • Support for JPA 4.0 flush mode "explicit" #36401
  • Support application-wide defaultHtmlEscape setting in WebFlux RequestContext #36400
  • Support Predicate<RequestPath>> in path API version resolver #36398
  • Avoid duplicate flushes in HttpMessageConverter implementations #36383
  • Add support for non-flushing OutputStream to StreamUtils #36382
  • Make it easier to get InputStream from RestClient #36380
  • RuntimeHintsWriter should comply with reachability-metadata-schema-v1.2.0.json #36379
  • Make it easier to create custom HttpExchangeAdapter #36374
  • Improve ResourceHttpMessageConverter target type support #36368
  • org.springframework.test.web.servlet.assertj.AbstractHttpServletResponseAssert#headers case sensitivity #36349
  • Allow registering serialized lambda metadata through RuntimeHints #36339
  • Refactor calculateHashCode in RequestMappingInfo #36325

🐞 Bug Fixes

  • MetadataReader misses enclosing class name for Kotlin nested classes with Java 24+ #36451
  • Guard against invalid id/event values in Server Sent Events #36440
  • Component scanning fails against non-loadable annotation type with enum array on Java 25 #36432
  • Duplicate ServletServerHttpRequest headers #36418
  • Incomplete debug message in ConfigurationClassBeanDefinitionReader #36410
  • Inconsistent ApplicationEventMulticaster state after removing ApplicationListener implemented by FactoryBean #36404
  • Propagate max frame length to WebSocket session #36370
  • Graceful shutdown of SimpleAsyncTaskExecutor #36362
  • Duplicate response headers with ResponseEntity<Mono<T>> (or Kotlin suspend function) controller method #36357
  • HttpServiceProxyFactory returns LinkedHashMap instead of target type for method with generic return type #36326
  • HttpMediaTypeException thrown when calculating compatible media types #36300

πŸ“” Documentation

  • Document FullyQualifiedConfigurationBeanNameGenerator in Javadoc and reference docs #36455
  • Document @Fallback alongside Primary in the reference manual and @Bean Javadoc #36439
  • Fix links to UriComponentsBuilder and polish examples #36403
  • Emphasize @Configuration classes over XML and Groovy in testing chapter #36393
  • Document tips to avoid issues with ignored default context configuration in tests #36392
  • Polish SpEL operator examples in reference docs #36367
  • Add programmatic configuration tabs in the transactional refdoc #36323
  • Document registration recommendations for BeanPostProcessor and BeanFactoryPostProcessor #34964

πŸ”¨ Dependency Upgrades

  • Upgrade to JUnit 6.0.3 #36389
  • Upgrade to Micrometer 1.16.4 #36444
  • Upgrade to Reactor 2025.0.4 #36443

❀️ Contributors

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

@AgilAghamirzayev, @aavoronin93, @cetf9h, @froggy0m0, @gbouwen, @husseinvr97, @jisub-dev, @ngocnhan-tran1996, @siom79, and @xxxxxxjun

v6.2.17

13 Mar 08:15

Choose a tag to compare

⭐ New Features

  • Leverage ResourceHandlerUtils in ScriptTemplateView #36459
  • Restore ScriptTemplateViewTests #36457
  • Fix log message in ConfigurationClassBeanDefinitionReader #36454
  • Resolve context initializers only once in AbstractTestContextBootstrapper #36431
  • Exclude legacy @javax.validation.Constraint from convention-based annotation attribute override check #36412
  • Optimize MediaType(MediaType, Charset) constructor #36351
  • Optimize the addition of a charset to the MediaType in AbstractHttpMessageConverter #36350
  • Consistent adaptation of HTTP headers on Servlet responses #36345
  • Improve performance of validation groups determination in WebFlux #36337
  • Detect all common size exceptions from Tomcat and Commons FileUpload 2.x #36324

🐞 Bug Fixes

  • Guard against invalid id/event values in Server Sent Events #36442
  • Incomplete debug message in ConfigurationClassBeanDefinitionReader #36411
  • Inconsistent ApplicationEventMulticaster state after removing ApplicationListener implemented by FactoryBean #36405
  • Graceful shutdown of SimpleAsyncTaskExecutor #36384
  • HttpMediaTypeException thrown when calculating compatible media types #36363
  • ResolvableType#getGenerics() breaks serialization #36347
  • Multipart upload leak on client abort (ByteBuf.release() not called) #36327

πŸ“” Documentation

  • Document @Fallback alongside Primary in the reference manual and @Bean Javadoc #36441
  • Document registration recommendations for BeanPostProcessor and BeanFactoryPostProcessor #36436
  • Fix links to UriComponentsBuilder and polish examples #36406
  • Emphasize @Configuration classes over XML and Groovy in testing chapter #36394
  • Polish SpEL operator examples in reference docs #36375

πŸ”¨ Dependency Upgrades

  • Upgrade to JUnit 5.14.3 #36388
  • Upgrade to Micrometer 1.15.10 #36446
  • Upgrade to Reactor 2024.0.16 #36445

v7.0.5

18 Feb 13:03

Choose a tag to compare

⚠️ Attention Required

  • Optimize request and response header handling in Spring MVC #36334

⭐ New Features

  • Consistent adaptation of HTTP headers on Servlet responses #36343
  • Copy methodAnnotations in MethodParameter copy constructor #36342
  • Improve performance of validation groups determination in WebFlux #36336
  • Reuse AnnotatedMethod annotation cache in derived instances #36322
  • Optimize the addition of a charset to the MediaType in AbstractHttpMessageConverter #36320
  • Optimize MediaType(MediaType, Charset) constructor #36318
  • Detect all common size exceptions from Tomcat and Commons FileUpload 2.x #36317
  • Consistently support @Autowired as a meta-annotation #36315
  • Avoid duplicate required attribute lookup for @Autowired annotations #36314
  • Cache @ResponseBody presence per controller class in RequestResponseBodyMethodProcessor #36311

🐞 Bug Fixes

  • ResolvableType#getGenerics() breaks serialization #36346
  • DefaultHttpMessageConverters not adding provided configurer #36332
  • Restore early MessageConsumer creation for temporary queue #36321
  • Multipart upload leak on client abort (ByteBuf.release() not called) #36262

πŸ“” Documentation

  • Document that SpEL expressions using Optional with null-safe and Elvis operators are not compilable #36331
  • Improve documentation of baseline API version to emphasize version must be supported #36316
  • Stop referring to obsolete ListenableFuture in documentation #36313
  • Stop referring to standard Java features as "Java 8" features in documentation #36310

❀️ Contributors

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

@Niravil and @TAKETODAY

v7.0.4

12 Feb 09:33

Choose a tag to compare

⭐ New Features

  • Cache method annotations in MethodParameter and AnnotatedMethod #36307
  • Consistently support @Lazy as a meta-annotation at arbitrary depths #36306
  • Consistently support @Validated as a meta-annotation at arbitrary depths #36305
  • Let developers disable default registrations in HttpMessageConverters #36303
  • Log which HandlerInterceptor threw the exception #36281
  • Improve performance of hashcode calculations for request mappings #36279
  • Improve performance of HandlerMethod bean lookup #36278
  • Improve performance of version mapping #36276
  • Improve performance of single pattern request mappings #36275
  • Improve performance of validation groups determination #36274
  • Add setPackagesToScan configuration method to LocalEntityManagerFactoryBean #36270
  • Remove outdated GraalVM substitution #36257
  • Introduce beforeRetry callback with RetryState argument #36245
  • Optimize NamedParameterUtils#buildValueArray by lazily fetching SqlParameter #36230
  • Allow customization of the ProxyFactory in HttpServiceProxyFactory used to create HTTP service proxies #36225
  • Consistently close streams through try-with-resources in FileCopyUtils #36223
  • Use Java Files utilities in FileCopyUtils #36221
  • SqlBinaryValue and SqlCharacterValue should support InputStream content with undetermined length #36219
  • Support JtaTransactionManager and SpringBeanContainer configuration on HibernateJpaVendorAdapter #36216
  • Add TaskCallback/Callable/Runnable wrapper for retryable tasks #36208
  • Refine YamlProcessor to allow different empty values #36207
  • Anticipate fixing Kotlin 2.3 compilation warning #36203
  • Allow YAML processors to create a flattened map with nulls included #36197
  • Use Reader.transferTo in FileCopyUtils #36196
  • DataBufferUtils.write() with NettyDataBuffer on JDK 25 hangs indefinitely #36184
  • Make SendToMethodReturnValueHandler and SubscriptionMethodReturnValueHandler customizable, to allow for pass-through of message headers #36179
  • Introduce RestClient.ResponseSpec#requiredBody #36173
  • Make scope fully configurable in BeanRegistry/BeanRegistrar #36171
  • ConcurrencyThrottleSupport and thread interruption #36167
  • Add overloaded sendAndReceive methods to JmsTemplate to use explicit response queue #36162
  • WebClient (Reactor) attributes on Netty channel do not clear after connection release #36158
  • Support HttpEntity on ContentRequestMatchers.multipartData #36154
  • Reintroduce WebLogicJtaTransactionManager in Spring Framework 6.2.x #36151
  • Back-off for DefaultMessageListenerContainer is not applied consistently in case of listener setup failure #36143
  • Early support for JPA 4.0 EntityAgent (autowiring a shared proxy) #36025
  • Early compatibility with JPA 4.0 and Hibernate ORM 8.0 #35705

🐞 Bug Fixes

  • Resolved HttpEntity Controller argument does not reflect mutated HTTP headers #36298
  • Avoid lock congestion in ConcurrentReferenceHashMap #36293
  • AbstractMessageConverter does not support wildcards in supported MIME types #36285
  • Make LocalEntityManagerFactoryBean#setDataSource work on Hibernate as well as EclipseLink #36271
  • StompBrokerRelayMessageHandler fails to restart due to test context pausing #36266
  • Deadlock might occur when calling System.exit on startup (against multiple shutdown hooks) #36260
  • Missing resource hint for BeanRegistrar implementing ImportAware #36242
  • Inconsistent behavior with @Retryable on annotated interfaces #36233
  • Netty4HeadersAdapter.remove returns empty list instead of null for non-existing key #36226
  • Generic type in AsyncTaskExecutor.submit(Callable) should be @Nullable #36191
  • EclipseLinkConnectionHandle can fail against transaction isolation race condition #36165

πŸ“” Documentation

  • Remove obsolete code in Redirecting to a resource section #36284
  • Fix formatting in Web MVC HTTP Message Conversion documentation #36250
  • Remove obsolete doc for spring.context.annotated-bean-reader.create #36241
  • Document @SpringExtensionConfig in the reference manual #36240
  • Fix JSON syntax in STOMP overview documentation #36229
  • Revise documentation on JSR-330 support in the reference manual #36222
  • Fix links to JUnit User Guide #36217
  • Corrected the definition of coroutines #36209
  • Fix LocalContainerEntityManagerFactoryBean#setPersistenceUnitName javadoc #36205
  • Update documentation on trailing slash handling where type-level @GetMapping("/base") is combined with method level @GetMapping("/") #36198
  • Update documentation on the MediaType used for ProblemDetail #36192
  • Extract DispatcherServlet snippets #36175
  • Replace getErrors() with getBindingResult() in examples #36170
  • Refine CORS documentation to match latest changes #36156

πŸ”¨ Dependency Upgrades

  • Upgrade to Apache POI 5.5 #36174
  • Upgrade to ASM 9.9.1 and Objenesis 3.5 #36243
  • Upgrade to Micrometer 1.6.3 #36287
  • Upgrade to Reactor 2025.0.3 #36288

❀️ Contributors

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

@Ivarz, @catturtle123, @chschu, @deejay1, @dingqianwen, @dungdm93, @furaizi, @izeye, @kchung1995, @kilink, @msridhar, @ngocnhan-tran1996, @pgoslatara, @philwebb, @pisek, and @shub-est

v6.2.16

12 Feb 09:03

Choose a tag to compare

⭐ New Features

  • Improve performance of hashcode calculations for request mappings #36297
  • Improve performance of HandlerMethod bean lookup #36296
  • Improve performance of validation groups determination #36295
  • Improve performance of single pattern request mappings #36294
  • Optimize NamedParameterUtils#buildValueArray by lazily fetching SqlParameter #36232
  • Consistently close streams through try-with-resources in FileCopyUtils #36224
  • SqlBinaryValue and SqlCharacterValue should support InputStream content with undetermined length #36220
  • DataBufferUtils.write() with NettyDataBuffer on JDK 25 hangs indefinitely #36189
  • WebClient (Reactor) attributes on Netty channel do not clear after connection release #36163
  • Reintroduce WebLogicJtaTransactionManager in Spring Framework 6.2.x #36152
  • DisconnectedClientHelper should detect presence of RestClientException and WebClientException separately #36150
  • Add DataAccessException and MessagingException to the excluded outermost exceptions in DisconnectedClientHelper #36135
  • Improve user check in TransportHandlingSockJsService #36129

🐞 Bug Fixes

  • Avoid lock congestion in ConcurrentReferenceHashMap #36308
  • Resolved HttpEntity Controller argument does not reflect mutated HTTP headers #36301
  • AbstractMessageConverter does not support wildcards in supported MIME types #36286
  • Make LocalEntityManagerFactoryBean#setDataSource work on Hibernate as well as EclipseLink #36272
  • Deadlock might occur when calling System.exit on startup (against multiple shutdown hooks) #36268
  • Netty4HeadersAdapter.remove returns empty list instead of null for non-existing key #36227
  • EclipseLinkConnectionHandle can fail against transaction isolation race condition #36166
  • WiretapConnector leaks data buffers when response body not consumed #36051
  • UriComponentsBuilder loses the fragment when it consists of only a single character #36035
  • SimpleBeanInfoFactory fails to reliably resolve read/write methods in type hierarchies with unresolved generics #36026

πŸ“” Documentation

  • Fix links to JUnit User Guide #36218
  • Fix LocalContainerEntityManagerFactoryBean#setPersistenceUnitName javadoc #36206
  • Update documentation on trailing slash handling where type-level @GetMapping("/base") is combined with method level @GetMapping("/") #36200
  • Update documentation on the MediaType used for ProblemDetail #36193
  • Replace getErrors() with getBindingResult() in examples #36172
  • Upgrade Antora dependencies #36106
  • Fix typos and grammar #36023

πŸ”¨ Dependency Upgrades

  • Bump fast-xml-parser from 4.5.2 to 5.3.4 in /framework-docs #36239
  • Upgrade to ASM 9.9.1 and Objenesis 3.5 #36244
  • Upgrade to JUnit 5.14.2 #36148
  • Upgrade to Micrometer 1.15.9 #36290
  • Upgrade to Reactor 2024.0.15 #36289

v7.0.3

15 Jan 08:25

Choose a tag to compare

⚠️ Attention Required

  • Introduce Spring property to disable context pausing for tests #36117
  • Avoid unnecessary pausing of application contexts in the TestContext framework #36044

⭐ New Features

  • DisconnectedClientHelper should detect presence of RestClientException and WebClientException separately #36141
  • Deprecate PagedListHolder and PropertyComparator for removal #36139
  • Add DataAccessException and MessagingException to the excluded outermost exceptions in DisconnectedClientHelper #36134
  • Support property placeholders in HTTP service registry #36126
  • Retain original requested bean class for SpringContainedBean #36116
  • Add task rejection support to SyncTaskExecutor's concurrency throttle #36114
  • Precompute PropertyDescriptor array in SimpleBeanInfoFactory #36112
  • Add option for @ConcurrencyLimit to throw rejection exception #36109
  • Support HttpComponents 5.6 #36100
  • Fix double encoding in DefaultApiVersionInserter #36097
  • Optimize single-char wildcard path matching performance #36095
  • Allow WebFlux ApiVersionResolver to return a Mono #36084
  • Configure HttpMessageConverters as a list #36083
  • HTTP Interface with an @RequestBody Object method parameter should use class of actual value #36078
  • Consistently declare @Nullable on parameter in equals() implementations #36075
  • Support listener registration for @Transactional triggered method rollbacks #36073
  • Introduce generalized MethodFailureEvent for use in EventPublicationInterceptor #36072
  • Avoid duplicate flushes in StringHttpMessageConverter #36065
  • When no API version is provided, static resources fail to load #36059
  • When no API version is provided, /error requests also fail. #36058
  • Declare TaskCallback return value as potentially nullable #36057
  • Fix case-insensitive semantics for LinkedCaseInsensitiveMap entrySet #36056
  • Update to NullAway 0.12.15 and fix new warnings #36054
  • Provide alternative to execute(Retryable) which avoids RetryException in favor of rethrowing the last original RuntimeException #36052
  • Simplify TransactionalOperator.executeAndAwait by removing Optional #36039
  • Deprecated MockMvcClientHttpRequestFactory is required for tests with HTTP service interface proxy #35989
  • Introduce Jackson XML codecs #35752
  • Support listener registration for @Retryable triggered retry executions #35382

🐞 Bug Fixes

  • Fix SmartFactoryBean type matching for ResolvableType.NONE #36123
  • AbstractMessageSendingTemplate ignores headers in convertAndSend() variant #36120
  • JmsClient.sendAndReceive() fails if headers are included #36118
  • PropertyDescriptorUtils does not reliably resolve overloaded write methods #36113
  • Fix context class resolution for nested types in AbstractJacksonHttpMessageConverter #36111
  • DefaultApiVersionInserter encodes already encoded URI #36080
  • ConverterFactory nullness mismatch with Converter #36063
  • WiretapConnector leaks data buffers when response body not consumed #36050
  • CompilationException should not use -1 for line or column numbers when they are unknown #36041
  • org.springframework.core.test.tools.TestCompiler.Errors should handle case where warnings are turned into errors #36037
  • UriComponentsBuilder loses the fragment when it consists of only a single character #36029
  • Parameter names of the handler method are null in HandlerInterceptor::preHandle during first invocation of an endpoint #36024
  • PropertyDescriptorUtils does not reliably resolve read/write methods in type hierarchies with generics #36019
  • Illegal reflection use against Hibernate Validator 9 on module path #36012

πŸ“” Documentation

  • Clarify unversioned handler matching precedence #36125
  • Clarify meaning of maxAttempts in FixedBackOff vs. maxRetries in RetryPolicy #36119
  • Polishing AOT cache documentation #36108
  • Upgrade Antora dependencies #36105
  • Modernize the DispatcherServlet Locale documentation #36099
  • Fix Kotlin example in Multipart Content #36094
  • Remove @EnableWebFlux from documentation code snippets #36091
  • Fix Kotlin example in CORS and Functional Endpoints references #36089
  • Extract remaining WebMVC configuration snippets #36088
  • Remove the "Other Web Frameworks" documentation #36086
  • Fix reference links in Configuration page #36079
  • Document HttpHeaders#toSingleValueMap() case-sensitive behavior #36070
  • Correct encode Javadoc for UriComponents and UriComponentsBuilder #36040
  • Fix typos and grammar #36022
  • Custom @ExceptionHandler silently ignored when spring.mvc.problemdetails.enabled=true without @Order #35982
  • Document how to discard response body with WebTestClient #35953
  • Modernize the view technologies section #35450
  • Remove JavaScript/Kotlin from ScriptEngine documentation #27919

πŸ”¨ Dependency Upgrades

  • Upgrade to Micrometer 1.16.2 #36145
  • Upgrade to Reactor 2025.0.2 #36144

❀️ Contributors

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

@JKaplanEmpty-Nes, @MukjepScarlet, @TerryTaoYY, @haydenrear, @jhan0121, @jher235, @marcphilipp, @mipo256, @msridhar, @ngocnhan-tran1996, @parkhojeong, @philipbolting, @playous, @quaff, @thelightway24, and @xyraclius

v7.0.2

11 Dec 16:27

Choose a tag to compare

⭐ New Features

  • Avoid unnecessary list creation and processing in AbstractTestContextBootstrapper #35995
  • AbstractTestContextBootstrapper should resolve ContextLoader only once #35994
  • Log RetryException for @Retryable methods #35983
  • Consistently stop already started Lifecycle beans on cancelled refresh #35964
  • Support timeouts in @Retryable and RetryPolicy #35963
  • Use == instead of instanceof for primitive array type checks #35962
  • Introduce MultiValueMapCollector for use with streams #35958
  • Avoid package cycle caused by use of UriComponentsBuilder in ServletServerHttpRequest #35952
  • Target type in Converter interface should be @Nullable #35947
  • Provide access to attempt count in RetryListener as well as callbacks for the initial attempt #35940
  • DefaultHandshakeHandler should not log client faults on error level #35930
  • Log warning when meta-annotation is ignored due to types not present in classpath #35927
  • Revise ApplicationContext#getId() nullability to non-null #35925
  • Use concurrent set behind reactive TransactionSynchronizationManager#registerSynchronization #35921
  • Refine AbstractKotlinSerializationHttpMessageConverter#canWrite #35920
  • Register bean dependency for Optional injection point as well #35919
  • Change canRead/canWrite overrides to Class ones in AbstractSmartHttpMessageConverter #35916
  • Do not make HttpHeaders read-only in HttpEntity #35888
  • Add WebFlux SSE support with GSON #35884
  • Different ReactorNettyWebSocketSession call getId() may return the same value #35883
  • Refine nullability of Assert#noNullElements #35868
  • Allow configuring default maxIdleTime on InMemoryWebSessionStore. #35866
  • Refine BindingReflectionHintsRegistrar with ObjectToObjectConverter hints #35847
  • Add resetCaches() method to general CacheManager interface #35845
  • Enhance handleTypeMismatch error message in ResponseEntityExceptionHandler #35837
  • Add support for package-private BeanRegistrar in Spring AOT generated code #35803
  • Use ExtendedServletRequestDataBinder/ExtendedWebExchangeDataBinder for functional request binding #35800
  • Expose Collection on FragmentsRendering to facilitate Unit Tests #35775
  • Improve i18n-support for NoResourceFoundException #35758
  • Cache resolved singleton beans in injected Provider instance #35373

🐞 Bug Fixes

  • ContextConfigurationAttributes(Class) constructor incorrectly sets inheritLocations to false #36000
  • NullPointerException thrown from JdkClientHttpRequestFactory for null request header value #35996
  • State inconsistency in LazyConnectionDataSourceProxy when connection settings fail #35980
  • SubscriberInputStream#resume misuses parked thread reference #35978
  • Shared EntityManager returned by AbstractEntityManagerFactoryBean cannot be advised by AspectJ interceptor #35974
  • RestClient cannot make HEAD requests when the response declares gzip Content-Encoding #35966
  • ServerRequestObservationContext(s) miss Propagator.Getter method implementation #35965
  • Jackson used instead of kotlinx.serialization for more complex types #35960
  • Strong locking in ConcurrentReferenceHashMap#computeIfAbsent may cause context initialisation deadlock #35944
  • BridgeMethodResolver change in 6.2.13 breaks Spring Data entity introspection #35936
  • DefaultMessageListenerContainer does not clear Session and MessageConsumer for paused invokers #35932
  • Tighten cacheable decision behind @Lazy injection point #35917
  • AOT-generated bean definition does not consider name of RuntimeBeanReference using name and type #35913
  • Accidental fallback match for Collection-type beans due to @Bean-level qualifier annotation #35908
  • SingletonSupplier should be defensive against singletonInstance/initialized visibility mismatch #35905
  • SortedResourcesFactoryBean does not accept non-existent resources anymore #35895
  • Support reading unresolvable types in AbstractJacksonHttpMessageConverter #35889
  • Refine Kotlin Serialization codec type checks #35885
  • UrlHandlerFilter also removes query parameters and fragment when using HTTP redirect #35873
  • Fix handling of ServerSentEvent with Jackson encoder #35872
  • @EnableResilientMethods does not participate in globally enforced target class proxying #35863
  • RestTestClient can leak HTTP connections when no body expectations are performed #35784
  • Use provided ReactiveAdapterRegistry in BindingContext constructor #35771
  • PathMatchingResourcePatternResolver fails with URI in JAR manifest Class-Path entries #35682

πŸ“” Documentation

  • Correct link to Reactive Libraries in reference docs #35970
  • Document that annotations are ignored if attributes reference types not present in the classpath #35959
  • Remove JUnit 4 based meta-annotation example #35903
  • Refer to "Spring Tools" instead of "Spring Tools for Eclipse" in reference manual #35901
  • Document that SpringExtension requires JUnit Jupiter 6.0 or higher #35900
  • Fix broken Javadoc links to methods #35899
  • Clarify JMS sessionTransacted flag for local versus global transaction #35897
  • Reference docs should not use obsolete "junit5" links #35892
  • Testing chapter references nonexistent Dependency Management documentation #35890
  • Wrong interface in WebFlux Documentation page for API Version #35887
  • Update reference documentation to use Jackson 3 #35886

πŸ”¨ Dependency Upgrades

  • Upgrade to json-path 2.10.0 #35924
  • Upgrade to Micrometer 1.16.1 [#3...
Read more

v6.2.15

11 Dec 10:32

Choose a tag to compare

⭐ New Features

  • Avoid package cycle caused by use of UriComponentsBuilder in ServletServerHttpRequest #35954
  • DefaultHandshakeHandler should not log client faults on error level #35948
  • Use concurrent set behind reactive TransactionSynchronizationManager#registerSynchronization #35922
  • Expose Collection on FragmentsRendering to facilitate Unit Tests #35912
  • Different ReactorNettyWebSocketSession call getId() may return the same value #35911
  • Enhance handleTypeMismatch error message in ResponseEntityExceptionHandler #35878

🐞 Bug Fixes

  • NullPointerException thrown from JdkClientHttpRequestFactory for null request header value #35998
  • State inconsistency in LazyConnectionDataSourceProxy when connection settings fail #35981
  • SubscriberInputStream#resume misuses parked thread reference #35979
  • PathMatchingResourcePatternResolver fails with URI in JAR manifest Class-Path entries #35967
  • Strong locking in ConcurrentReferenceHashMap#computeIfAbsent may cause context initialisation deadlock #35945
  • BridgeMethodResolver change in 6.2.13 breaks Spring Data entity introspection #35941
  • DefaultMessageListenerContainer does not clear Session and MessageConsumer for paused invokers #35935
  • Tighten cacheable decision behind @Lazy injection point #35918
  • Use provided ReactiveAdapterRegistry in BindingContext constructor #35914
  • Accidental fallback match for Collection-type beans due to @Bean-level qualifier annotation #35909
  • SortedResourcesFactoryBean does not accept non-existent resources anymore #35896

πŸ“” Documentation

  • Document that annotations are ignored if attributes reference types not present in the classpath #35973
  • Fix broken Javadoc links to methods #35904
  • Refer to "Spring Tools" instead of "Spring Tools for Eclipse" in reference manual #35902
  • Clarify JMS sessionTransacted flag for local versus global transaction #35898
  • Reference docs should not use obsolete "junit5" links #35893
  • Testing chapter references nonexistent Dependency Management documentation #35891

πŸ”¨ Dependency Upgrades

  • Upgrade to json-path 2.10.0 #35937
  • Upgrade to Micrometer 1.14.14 #35986
  • Upgrade to Reactor 2024.0.13 #35987