领先一步
VMware 提供培训和认证,以加速您的进步。
了解更多我很高兴地宣布,Spring Batch 5.0.0-M5
现在可以从我们的 里程碑存储库 获取。此里程碑的主要主题是改进 Spring Batch 中的测试支持。这篇文章将逐步介绍该领域的主要变化以及在此里程碑版本中引入的其他更改。有关完整更改列表,请参阅 发行说明。
在 4.3 版本之前,JobLauncherTestUtils
用于自动装配被测作业,目的是简化测试设置。但是,如果测试上下文中定义了多个作业呢?如果根本没有定义任何Job
bean 呢?因此,虽然这种自动装配在大多数情况下都很方便,但事实证明它在上述情况下会导致一些问题。在此版本中,根据社区反馈,我们决定删除JobLauncherTestUtils
中任何作业的自动装配。
类似地,JobRepositoryTestUtils
用于从应用程序上下文中自动装配DataSource
。同样,如果测试上下文中没有定义数据源或定义了多个数据源呢?在此版本中,JobRepositoryTestUtils
已更新为针对JobRepository
接口工作,无需处理存储库的任何实现细节(例如数据源)。
如果在测试上下文中手动定义这些实用程序 bean 或通过@SpringBatchTest
导入它们,则可以在测试上下文中定义多个此类 bean 时手动设置被测作业或测试数据源。
在此里程碑版本中,Spring Batch 的整个测试套件已迁移到 JUnit 5。虽然这不会直接影响最终用户,但它有助于 Batch 团队以及社区贡献者使用下一代 JUnit 来编写更好的测试。
在此里程碑版本中,文档已更新为使用 Spring Asciidoctor 后端。此后端确保产品组合中的所有项目都遵循相同的文档样式。为了与其他项目保持一致,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 上提供反馈。