設定 Step
儘管 Step
所需的相依性列表相對簡短,但它是一個極其複雜的類別,可能包含許多協作者。
-
Java
-
XML
當使用 Java 設定時,您可以使用 Spring Batch builders,如下列範例所示
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 特定名稱,它在處理期間(就在提交之前)定期儲存 StepExecution 和 ExecutionContext 。 |
3 | chunk :相依性的 Java 特定名稱,表示這是一個基於項目的步驟,以及在交易提交之前要處理的項目數量。 |
請注意,repository 預設為 jobRepository (透過 @EnableBatchProcessing 提供),而 transactionManager 預設為 transactionManager (從應用程式 context 提供)。此外,ItemProcessor 是可選的,因為項目可以直接從 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 特定名稱,它在處理期間(就在提交之前)定期儲存 StepExecution 和 ExecutionContext 。對於內聯 <step/> (在 <job/> 中定義的一個),它是 <job/> 元素上的屬性。對於獨立的 <step/> ,它被定義為 <tasklet/> 的屬性。 |
3 | commit-interval :在交易提交之前要處理的項目數量的 XML 特定名稱。 |
請注意,job-repository 預設為 jobRepository ,而 transaction-manager 預設為 transactionManager 。此外,ItemProcessor 是可選的,因為項目可以直接從 reader 傳遞到 writer。 |
前面的設定包含建立以項目為導向的步驟所需的唯一相依性
-
reader
:提供項目以進行處理的ItemReader
。 -
writer
:處理由ItemReader
提供的項目的ItemWriter
。