配置 Step
尽管 Step
所需的依赖项列表相对较短,但它是一个极其复杂的类,可能包含许多协作对象。
-
Java
-
XML
使用 Java 配置时,可以使用 Spring Batch 构建器,如下例所示
Java 配置
/**
* 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 ,用于在处理期间启动和提交事务。 |
2 | repository :JobRepository 的 Java 特定名称,用于在处理期间( justo 在提交之前)定期存储 StepExecution 和 ExecutionContext 。 |
3 | chunk :此依赖项的 Java 特定名称,表示这是一个基于 Item 的 Step,以及在提交事务之前要处理的 Item 数量。 |
请注意,repository 默认为 jobRepository (通过 @EnableBatchProcessing 提供),transactionManager 默认为 transactionManager (从应用程序上下文提供)。此外,ItemProcessor 是可选的,因为 Item 可以直接从 reader 传递到 writer。 |
为了简化配置,可以使用 Spring Batch XML 命名空间,如下例所示
XML 配置
<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 ,用于在处理期间启动和提交事务。 |
2 | job-repository :JobRepository 的 XML 特定名称,用于在处理期间( justo 在提交之前)定期存储 StepExecution 和 ExecutionContext 。对于内联 <step/> (在 <job/> 中定义),它是 <job/> 元素上的一个属性。对于独立 <step/> ,它被定义为 <tasklet/> 的一个属性。 |
3 | commit-interval :要处理的 Item 数量的 XML 特定名称,在提交事务之前。 |
请注意,job-repository 默认为 jobRepository ,transaction-manager 默认为 transactionManager 。此外,ItemProcessor 是可选的,因为 Item 可以直接从 reader 传递到 writer。 |
上述配置包含了创建面向 Item 的 Step 所需的唯一依赖项
-
reader
:提供要处理的 Item 的ItemReader
。 -
writer
:处理由ItemReader
提供的 Item 的ItemWriter
。