领先一步
VMware 提供培训和认证,助您加速进步。
了解更多我很高兴地宣布 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 或测试数据源。
在此里程碑版本中,Spring Batch 的整个测试套件已迁移到 JUnit 5。虽然这不会直接影响最终用户,但它有助于 Batch 团队和社区贡献者使用下一代 JUnit 来编写更好的测试。
在此里程碑版本中,文档已更新为使用 Spring Asciidoctor Backend。此后端可确保作品集中的所有项目遵循相同的文档样式。为了与其他项目保持一致,Spring Batch 的参考文档在此版本中已更新为使用此后端。您可以在 此处 查看参考文档的新版本。
此版本包含一些弃用和 API 更改。
此里程碑版本引入了以下弃用:
org.springframework.batch.test.AssertFile 实用工具类已弃用,改用现代测试库提供的类似实用工具。在此版本中,我们在 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 Batch 5 的工作时,我们期待您在 Github、Twitter 和 StackOverflow 上的反馈。