github spring-projects/spring-framework v7.0.4

7 hours ago

⭐ 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

Don't miss a new spring-framework release

NewReleases is sending notifications on new releases.