此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring Batch 文档 5.2.2spring-doc.cadn.net.cn

提交间隔

如前所述,步骤读入和写出项目,定期提交 通过使用提供的PlatformTransactionManager.使用commit-interval的 1、它 在写入每个单独的项目后提交。这在许多情况下不太理想, 因为开始和提交事务的成本很高。理想情况下,最好是 在每笔交易中处理尽可能多的项目,这完全取决于 正在处理的数据类型以及与步骤交互的资源。 因此,您可以配置在提交中处理的项数。spring-doc.cadn.net.cn

以下示例显示了step谁的tasklet有一个commit-interval值为 10,因为它将在 Java 中定义:spring-doc.cadn.net.cn

Java 配置
@Bean
public Job sampleJob(JobRepository jobRepository, Step step1) {
    return new JobBuilder("sampleJob", jobRepository)
                     .start(step1)
                     .build();
}

@Bean
public Step step1(JobRepository jobRepository, PlatformTransactionManager transactionManager) {
	return new StepBuilder("step1", jobRepository)
				.<String, String>chunk(10, transactionManager)
				.reader(itemReader())
				.writer(itemWriter())
				.build();
}

以下示例显示了step谁的tasklet有一个commit-interval值为 10,因为它将在 XML 中定义:spring-doc.cadn.net.cn

XML 配置
<job id="sampleJob">
    <step id="step1">
        <tasklet>
            <chunk reader="itemReader" writer="itemWriter" commit-interval="10"/>
        </tasklet>
    </step>
</job>

在前面的示例中,每个事务处理 10 个项目。在 开始处理时,事务开始。另外,每次readItemReader,则计数器递增。当它达到 10 时,聚合项的列表 传递给ItemWriter,并且事务被提交。spring-doc.cadn.net.cn