Spring Batch 5.0.0-M5 现已发布!

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

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

测试工具配置更新

在 4.3 版本之前,JobLauncherTestUtils 通常会自动注入被测试的作业,以简化测试设置。但是,如果在测试上下文中定义了多个作业怎么办?或者如果根本没有定义任何 Job bean 怎么办?因此,尽管这种自动注入在大多数情况下很方便,但在上述情况下却导致了一些问题。在此版本中,基于社区反馈,我们决定移除 JobLauncherTestUtils 中对任何作业的自动注入。

类似地,JobRepositoryTestUtils 曾经自动注入应用程序上下文中的 DataSource。再次,如果在测试上下文中没有定义数据源或定义了多个数据源怎么办?在此版本中,JobRepositoryTestUtils 已更新为针对 JobRepository 接口工作,无需处理仓库的任何实现细节(例如数据源)。

如果您在测试上下文中手动定义这些工具 bean 或通过 @SpringBatchTest 导入它们,则当您的测试上下文中定义了这些类型的多个 bean 时,您需要手动设置被测试的作业或测试数据源。

迁移到 JUnit Jupiter

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

改进的文档

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

废弃和 API 更改

此版本包含多项废弃和 API 更改。

废弃

此里程碑版本引入了以下废弃内容:

  • Hibernate(游标/分页)项目读取器和项目写入器已被废弃,推荐使用基于 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 社区所有即将到来的活动。

查看全部