Releases · spring-projects/spring-framework
v7.0.6
⚠️ 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
ResourceHandlerUtilsinScriptTemplateView#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 inAbstractTestContextBootstrapper#36425 - Further align synthesized annotation
toString()with modern JDKs #36417 - Introduce
setDefaultCharset()inAbstractResourceBasedMessageSource#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
FullyQualifiedConfigurationBeanNameGeneratorin Javadoc and reference docs #36455 - Document
@FallbackalongsidePrimaryin the reference manual and@BeanJavadoc #36439 - Fix links to
UriComponentsBuilderand polish examples #36403 - Emphasize
@Configurationclasses 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
BeanPostProcessorandBeanFactoryPostProcessor#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
⭐ New Features
- Leverage
ResourceHandlerUtilsinScriptTemplateView#36459 - Restore
ScriptTemplateViewTests#36457 - Fix log message in
ConfigurationClassBeanDefinitionReader#36454 - Resolve context initializers only once in
AbstractTestContextBootstrapper#36431 - Exclude legacy
@javax.validation.Constraintfrom 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
@FallbackalongsidePrimaryin the reference manual and@BeanJavadoc #36441 - Document registration recommendations for
BeanPostProcessorandBeanFactoryPostProcessor#36436 - Fix links to
UriComponentsBuilderand polish examples #36406 - Emphasize
@Configurationclasses over XML and Groovy in testing chapter #36394 - Polish SpEL operator examples in reference docs #36375
🔨 Dependency Upgrades
v7.0.5
⚠️ 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
AnnotatedMethodannotation 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
@Autowiredas a meta-annotation #36315 - Avoid duplicate
requiredattribute lookup for@Autowiredannotations #36314 - Cache
@ResponseBodypresence per controller class inRequestResponseBodyMethodProcessor#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
Optionalwith 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
ListenableFuturein 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
⭐ New Features
- Cache method annotations in
MethodParameterandAnnotatedMethod#36307 - Consistently support
@Lazyas a meta-annotation at arbitrary depths #36306 - Consistently support
@Validatedas 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
setPackagesToScanconfiguration method toLocalEntityManagerFactoryBean#36270 - Remove outdated GraalVM substitution #36257
- Introduce
beforeRetrycallback withRetryStateargument #36245 - Optimize NamedParameterUtils#buildValueArray by lazily fetching SqlParameter #36230
- Allow customization of the
ProxyFactoryinHttpServiceProxyFactoryused 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
DefaultMessageListenerContaineris 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#setDataSourcework on Hibernate as well as EclipseLink #36271 StompBrokerRelayMessageHandlerfails to restart due to test context pausing #36266- Deadlock might occur when calling
System.exiton startup (against multiple shutdown hooks) #36260 - Missing resource hint for
BeanRegistrarimplementingImportAware#36242 - Inconsistent behavior with
@Retryableon annotated interfaces #36233 Netty4HeadersAdapter.removereturns empty list instead ofnullfor non-existing key #36226- Generic type in AsyncTaskExecutor.submit(Callable) should be
@Nullable#36191 EclipseLinkConnectionHandlecan fail against transaction isolation race condition #36165
📔 Documentation
- Remove obsolete code in
Redirecting to a resourcesection #36284 - Fix formatting in Web MVC HTTP Message Conversion documentation #36250
- Remove obsolete doc for spring.context.annotated-bean-reader.create #36241
- Document
@SpringExtensionConfigin 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#setPersistenceUnitNamejavadoc #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
DispatcherServletsnippets #36175 - Replace
getErrors()withgetBindingResult()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
⭐ 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#setDataSourcework on Hibernate as well as EclipseLink #36272 - Deadlock might occur when calling
System.exiton startup (against multiple shutdown hooks) #36268 Netty4HeadersAdapter.removereturns empty list instead ofnullfor non-existing key #36227EclipseLinkConnectionHandlecan 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
SimpleBeanInfoFactoryfails to reliably resolve read/write methods in type hierarchies with unresolved generics #36026
📔 Documentation
- Fix links to JUnit User Guide #36218
- Fix
LocalContainerEntityManagerFactoryBean#setPersistenceUnitNamejavadoc #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()withgetBindingResult()in examples #36172 - Upgrade Antora dependencies #36106
- Fix typos and grammar #36023
🔨 Dependency Upgrades
v7.0.3
⚠️ 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
PagedListHolderandPropertyComparatorfor 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
PropertyDescriptorarray inSimpleBeanInfoFactory#36112 - Add option for
@ConcurrencyLimitto 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 Objectmethod parameter should use class of actual value #36078 - Consistently declare
@Nullableon parameter inequals()implementations #36075 - Support listener registration for
@Transactionaltriggered method rollbacks #36073 - Introduce generalized
MethodFailureEventfor use inEventPublicationInterceptor#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,
/errorrequests also fail. #36058 - Declare
TaskCallbackreturn 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 avoidsRetryExceptionin favor of rethrowing the last originalRuntimeException#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
@Retryabletriggered retry executions #35382
🐞 Bug Fixes
- Fix
SmartFactoryBeantype matching forResolvableType.NONE#36123 AbstractMessageSendingTemplateignores headers inconvertAndSend()variant #36120JmsClient.sendAndReceive()fails if headers are included #36118PropertyDescriptorUtilsdoes not reliably resolve overloaded write methods #36113- Fix context class resolution for nested types in
AbstractJacksonHttpMessageConverter#36111 DefaultApiVersionInserterencodes 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
PropertyDescriptorUtilsdoes 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
@EnableWebFluxfrom documentation code snippets #36091 - Fix Kotlin example in
CORSandFunctional Endpointsreferences #36089 - Extract remaining WebMVC configuration snippets #36088
- Remove the "Other Web Frameworks" documentation #36086
- Fix reference links in
Configurationpage #36079 - Document HttpHeaders#toSingleValueMap() case-sensitive behavior #36070
- Correct
encodeJavadoc forUriComponentsandUriComponentsBuilder#36040 - Fix typos and grammar #36022
- Custom
@ExceptionHandlersilently ignored whenspring.mvc.problemdetails.enabled=truewithout@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
❤️ 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
⭐ New Features
- Avoid unnecessary list creation and processing in
AbstractTestContextBootstrapper#35995 AbstractTestContextBootstrappershould resolveContextLoaderonly once #35994- Log
RetryExceptionfor@Retryablemethods #35983 - Consistently stop already started
Lifecyclebeans on cancelled refresh #35964 - Support timeouts in
@RetryableandRetryPolicy#35963 - Use
==instead ofinstanceoffor primitive array type checks #35962 - Introduce
MultiValueMapCollectorfor 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
RetryListeneras 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
Optionalinjection point as well #35919 - Change
canRead/canWriteoverrides toClassones inAbstractSmartHttpMessageConverter#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
BindingReflectionHintsRegistrarwithObjectToObjectConverterhints #35847 - Add
resetCaches()method to general CacheManager interface #35845 - Enhance handleTypeMismatch error message in ResponseEntityExceptionHandler #35837
- Add support for package-private
BeanRegistrarin 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
Providerinstance #35373
🐞 Bug Fixes
ContextConfigurationAttributes(Class)constructor incorrectly setsinheritLocationstofalse#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#computeIfAbsentmay 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
@Lazyinjection point #35917 - AOT-generated bean definition does not consider name of
RuntimeBeanReferenceusing name and type #35913 - Accidental fallback match for Collection-type beans due to
@Bean-level qualifier annotation #35908 SingletonSuppliershould be defensive againstsingletonInstance/initializedvisibility 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
ServerSentEventwith Jackson encoder #35872 @EnableResilientMethodsdoes 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
SpringExtensionrequires JUnit Jupiter 6.0 or higher #35900 - Fix broken Javadoc links to methods #35899
- Clarify JMS
sessionTransactedflag 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
v6.2.15
⭐ 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#computeIfAbsentmay 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
@Lazyinjection 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
sessionTransactedflag 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
v7.0.1
⭐ New Features
- Align
RestOperationsKotlin extensions nullability with Java one #35852 - Add
resetCaches()method to Caffeine/ConcurrentMapCacheManager #35840 - Fix single-check idiom in
UnmodifiableMultiValueMap#35822 - Fix
Spliteratorcharacteristics inConcurrentReferenceHashMap#35817 - RestTestClient does not configure JsonPathAssertions in the same way as WebTestClient #35793
🐞 Bug Fixes
- Fix
JdbcOperationsKotlin extensions #35846 - Fix
getCacheNames()concurrent access in NoOpCacheManager #35842 - Annotation discovery regression for interfaces extending
BeanNameAwareand co. #35835 - MissingPathVariableException produces wrong status code in ProblemDetail #35829
- Refine
ParameterizedPreparedStatementSetternullability #35749 - Fix HtmlUtils unescape for supplementary chars #35477
📔 Documentation
- Fix cross-reference links in HtmlUnit sections #35853
- Remove
@seeJavadoc references to deprecated PropertiesBeanDefinitionReader #35836 - Replace
kotlin-issuesattribute reference #35820 - Document semantics and behavior of
SpringExtension.getApplicationContext()#35764
❤️ Contributors
Thank you to all the contributors who worked on this release:
v6.2.14
⭐ New Features
- Add
resetCaches()method to Caffeine/ConcurrentMapCacheManager #35841 - Fix single-check idiom in
UnmodifiableMultiValueMap#35831 - Fix
Spliteratorcharacteristics inConcurrentReferenceHashMap#35828
🐞 Bug Fixes
- MissingPathVariableException produces wrong status code in ProblemDetail #35856
- Fix
getCacheNames()concurrent access in NoOpCacheManager #35844 - Annotation discovery regression for interfaces extending
BeanNameAwareand co. #35838 - Fix HtmlUtils unescape for supplementary chars #35832