Spring Batch 5.0.0-M5 现已可用!

版本发布 | Mahmoud Ben Hassine | 2022年8月24日 | ...

我很高兴地宣布 Spring Batch 5.0.0-M5 已可在我们的 里程碑仓库 中获得。此里程碑的主要主题是改进 Spring Batch 中的测试支持。本文将重点介绍此领域的重大更改以及此里程碑版本中引入的其他更改。有关完整的更改列表,请参阅 发布说明

测试实用工具配置更新

在 4.3 版本之前,JobLauncherTestUtils 会自动注入待测试的 job,目的是简化测试设置。但如果测试上下文中定义了多个 job 怎么办?如果没有定义任何 Job bean 怎么办?因此,虽然这种自动注入在大多数情况下很方便,但事实证明它在上述情况下会导致一些问题。在此版本中,根据社区反馈,我们决定移除 JobLauncherTestUtils 中对任何 job 的自动注入。

同样,JobRepositoryTestUtils 过去会从应用程序上下文中自动注入一个 DataSource。同样,如果测试上下文中定义了多个数据源或没有数据源怎么办?在此版本中,JobRepositoryTestUtils 已更新为针对 JobRepository 接口工作,而无需处理存储库的任何实现细节(例如数据源)。

如果您在测试上下文中手动定义这些实用工具 bean,或者通过 @SpringBatchTest 导入它们,那么当测试上下文中定义了多种此类类型的 bean 时,您将需要手动设置待测试的 job 或测试数据源。

迁移到 JUnit Jupiter

在此里程碑版本中,Spring Batch 的整个测试套件已迁移到 JUnit 5。虽然这不会直接影响最终用户,但它有助于 Batch 团队和社区贡献者使用下一代 JUnit 来编写更好的测试。

文档改进

在此里程碑版本中,文档已更新为使用 Spring Asciidoctor Backend。此后端可确保作品集中的所有项目遵循相同的文档样式。为了与其他项目保持一致,Spring Batch 的参考文档在此版本中已更新为使用此后端。您可以在 此处 查看参考文档的新版本。

弃用和 API 更改

此版本包含一些弃用和 API 更改。

弃用

此里程碑版本引入了以下弃用:

  • Hibernate(游标/分页)item reader 和 item writer 已弃用,改用基于 JPA 的版本。
  • org.springframework.batch.test.AssertFile 实用工具类已弃用,改用现代测试库提供的类似实用工具。

API 更改

在此版本中,我们在 ItemWriter 接口中引入了一个重大更改。

public interface ItemWriter<T> {

-- void write(List<? extends T> items) throws Exception;
++ void write(Chunk<? extends T> items) throws Exception;

}

虽然此更改看似很小,但我们认为它在更好的封装性以及在框架的不同区域和 API 中使用一致性语言方面具有巨大的附加值。ItemWriteListener API 也已更改为使用 Chunk API。

由于 Chunk API 实现了 java.lang.Iterable,因此此更改不会影响遍历项目列表的任何客户端代码。此外,此更改不会影响使用 lambda 表达式定义 ItemWriter 的任何示例,因为项目类型是推断的。有关已更改 API 的所有详细信息,请参阅 迁移指南

依赖升级

主要依赖已升级到以下版本:

  • 升级到 Spring Framework 6.0.0-M5
  • 升级到 Spring Data 2022.0.0-M5
  • 升级到 Spring Integration 6.0.0-M4
  • 升级到 Spring AMQP 3.0.0-M3
  • 升级到 Spring for Apache Kafka 3.0.0-M5
  • 升级到 Micrometer 1.10.0-M4
  • 升级到 Hibernate 6.1.2.Final

反馈

我们要感谢所有为此次发布做出贡献的贡献者!在我们继续进行 Spring Batch 5 的工作时,我们期待您在 GithubTwitterStackOverflow 上的反馈。


Spring Batch 主页|Github 源代码|参考文档

获取 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

领先一步

VMware 提供培训和认证,助您加速进步。

了解更多

获得支持

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件,只需一份简单的订阅。

了解更多

即将举行的活动

查看 Spring 社区所有即将举行的活动。

查看所有