Spring 数据库支持的批处理执行状态

Spring Batch Execution Status Backed by Database

来自Spring Guides

For starters, the @EnableBatchProcessing annotation adds many critical beans that support jobs and saves you a lot of leg work. This example uses a memory-based database (provided by @EnableBatchProcessing), meaning that when it’s done, the data is gone.

如何使执行状态由数据库(或其他一些持久记录支持,以便万一应用程序崩溃,作业从以前的状态恢复?

到目前为止,我的解决方案是让我的 ItemReader 成为一个 JdbcCursorItemReader,它从 table 的列 X 中读取记录NULL,而我的 ItemWriter 是一个 JdbcBatchItemWriter,它 使用列 X 上的数据更新记录,使得它是非空的(这样它就不会在下一次执行时被选中)。然而,这看起来真的很 hackish,我相信有一种更优雅的方法。谁能解释一下?

使用 @EnableBatchProcessing 注释时,如果您提供一个名为 dataSoureDataSource bean 定义,Spring Batch 将使用该数据库存储作业存储库,而不是内存映射。您可以在此处的文档中阅读有关此功能的更多信息:http://docs.spring.io/spring-batch/trunk/apidocs/org/springframework/batch/core/configuration/annotation/EnableBatchProcessing.html