Configuring a Step

尽管 Step 的必需依赖项列表相对较短,但它是一个可能包含许多协作者的极其复杂的类。

Java

在使用 Java 配置时,您可以使用 Spring Batch 构建器,如下例所示:

Java Configuration
/**
 * Note the JobRepository is typically autowired in and not needed to be explicitly
 * configured
 */
@Bean
public Job sampleJob(JobRepository jobRepository, Step sampleStep) {
    return new JobBuilder("sampleJob", jobRepository)
                .start(sampleStep)
                .build();
}

/**
 * Note the TransactionManager is typically autowired in and not needed to be explicitly
 * configured
 */
@Bean
public Step sampleStep(JobRepository jobRepository, (2)
		PlatformTransactionManager transactionManager) { (1)
	return new StepBuilder("sampleStep", jobRepository)
				.<String, String>chunk(10, transactionManager) (3)
				.reader(itemReader())
				.writer(itemWriter())
				.build();
}
<1>  `transactionManager`: Spring 的 `PlatformTransactionManager` 在处理期间开始并提交事务。
<1>  `repository`: `JobRepository` 的 Java 特定名称,用于定期存储 `StepExecution` 和 `ExecutionContext` 处理期间(在提交之前)。
<1>  `chunk`: 该依赖项的 Java 特定名称,表明这是一个基于项目的步骤以及在提交事务之前要处理的项目数。

请注意,repository 默认为 jobRepository(通过 @EnableBatchProcessing 提供),transactionManager 默认为 transactionManager(从应用程序上下文中提供)。此外,ItemProcessor 是可选的,因为可以将项目可以直接从读取器传递到写入器。

XML

为了简化配置,您可以使用 Spring Batch XML 命名空间,如下例所示:

XML Configuration
<job id="sampleJob" job-repository="jobRepository"> (2)
    <step id="step1">
        <tasklet transaction-manager="transactionManager"> (1)
            <chunk reader="itemReader" writer="itemWriter" commit-interval="10"/> (3)
        </tasklet>
    </step>
</job>
<1>  `transaction-manager`: Spring 的 `PlatformTransactionManager` 在处理过程中开始并提交事务。
<1>  `job-repository`: `JobRepository` 的 XML 特定名称,用于定期存储 `StepExecution` 和 `ExecutionContext` 处理期间(在提交之前)。对于内联 `&lt;step/&gt;`(在 `&lt;job/&gt;` 中定义的一个),它是一个 `&lt;job/&gt;` 元素上的属性。对于独立的 `&lt;step/&gt;`,它被定义为 `&lt;tasklet/&gt;` 的属性。
<1>  `commit-interval`: 在提交事务之前要处理的项目数的 XML 特定名称。

请注意,job-repository 默认为 jobRepositorytransaction-manager 默认为 transactionManager。此外,ItemProcessor 是可选的,因为可以将该项直接从读者直接传递给写作者。

前述配置包括创建面向项目的步骤所需的唯一必需依赖项:

  • reader: 为处理提供项目的 ItemReader

  • writer: 处理由 ItemReader 提供的项目的 ItemWriter