配置步骤
尽管 Step
所需的依赖项列表相对较少,但它是一个极其复杂的类,可能包含许多协作者。
- Java
- XML
在使用 Java 配置时,您可以使用 Spring Batch 构建器,如下例所示:
/**
* 注意 JobRepository 通常会自动注入,不需要显式配置
*/
@Bean
public Job sampleJob(JobRepository jobRepository, Step sampleStep) {
return new JobBuilder("sampleJob", jobRepository)
.start(sampleStep)
.build();
}
/**
* 注意 TransactionManager 通常会自动注入,不需要显式配置
*/
@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();
}
transactionManager
: Spring 的PlatformTransactionManager
,用于在处理过程中开始和提交事务。repository
: Java 特定名称的JobRepository
,在处理期间(提交前)定期存储StepExecution
和ExecutionContext
。chunk
: Java 特定名称的依赖项,表示这是一个基于项的步骤以及在事务提交之前要处理的项数。
注意,默认情况下 repository
为 jobRepository
(通过 @EnableBatchProcessing
提供),transactionManager
默认为 transactionManager
(从应用程序上下文中提供)。此外,ItemProcessor
是可选的,因为项可以直接从读取器传递到写入器。
为了简化配置,您可以使用 Spring Batch 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>
transaction-manager
: Spring 的PlatformTransactionManager
,用于在处理过程中开始和提交事务。job-repository
: XML 特定名称的JobRepository
,在处理期间(提交前)定期存储StepExecution
和ExecutionContext
。对于内联<step/>
(定义在<job/>
内部的步骤),它是<job/>
元素的属性。对于独立的<step/>
,它是<tasklet/>
的属性。commit-interval
: XML 特定名称的项数,在事务提交之前要处理的项数。
注意,默认情况下 job-repository
为 jobRepository
,transaction-manager
默认为 transactionManager
。此外,ItemProcessor
是可选的,因为项可以直接从读取器传递到写入器。
前面的配置包括了创建以项为导向的步骤所需的唯一必需依赖项:
-
reader
: 提供要处理的项目的ItemReader
。 -
writer
: 处理由ItemReader
提供的项目的ItemWriter
。