抢占先机
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 上提供反馈。