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

时间:2015-05-14 12:53:05

标签: spring-batch spring-jdbc

来自Spring Guides

  

对于初学者来说,@ EnableBatchProcessing注释添加了许多关键   豆类支持工作,为您节省大量的工作。这个例子   使用基于内存的数据库(由@EnableBatchProcessing提供),   这意味着当它完成时,数据就消失了。

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

到目前为止,我的解决方案是让我的ItemReader成为JdbcCursorItemReader,从表中读取记录的列X不是NULL ,我的ItemWriterJdbcBatchItemWriter,其中使用列X 上的数据更新记录,使其成为非空(以便赢得'在下次执行时被选中)。然而,这似乎真的很黑,我相信这是一种更优雅的方式。谁能请一些亮点?

1 个答案:

答案 0 :(得分:0)

使用@EnableBatchProcessing注释时,如果提供名为DataSource的{​​{1}} bean定义,则Spring Batch将使用该数据库作为作业存储库存储而不是内存映射。您可以在此处的文档中详细了解此功能:http://docs.spring.io/spring-batch/trunk/apidocs/org/springframework/batch/core/configuration/annotation/EnableBatchProcessing.html