ステップの構成
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, (1)
PlatformTransactionManager transactionManager) { (2)
return new StepBuilder(jobRepository) (3)
.<String, String>chunk(10).transactionManager(transactionManager) (4)
.reader(itemReader())
.writer(itemWriter())
.build();
}| 1 | repository: 処理中(コミット直前)に StepExecution および ExecutionContext を定期的に保管する JobRepository の Java 固有の名前。 | ||
| 2 | transactionManager: Spring の PlatformTransactionManager は、処理中にトランザクションを開始およびコミットします。 | ||
| 3 | ステップ名: ステップが Bean として宣言されている場合、名前は省略可能で、メソッド名から派生されます。ただし、ステップが Bean として定義されていない場合は、new StepBuilder("myStep", jobRepository) と同様に、StepBuilder コンストラクターに名前を明示的に指定する必要があります。 | ||
| 4 | chunk: これがアイテムベースのステップであることを示す依存関係の Java 固有の名前と、トランザクションがコミットされる前に処理されるアイテムの数。
|
構成を容易にするために、次の例に示すように、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: 処理中 (コミットの直前) に StepExecution および ExecutionContext を定期的に保存する JobRepository の XML 固有の名前。インライン <step/> ( <job/> 内で定義されたもの) の場合、これは <job/> 要素の属性です。スタンドアロン <step/> の場合、これは <tasklet/> の属性として定義されます。 | ||
| 3 | commit-interval: トランザクションがコミットされる前に処理されるアイテムの数の XML 固有の名前。
|
上記の構成には、アイテム指向のステップを作成するために必要な依存関係のみが含まれています。
reader: 処理するアイテムを提供するItemReader。writer:ItemReaderによって提供されるアイテムを処理するItemWriter。
| ステップで使用されるトランザクションマネージャーは、ジョブリポジトリで使用されるものと異なる場合があります。ただし、ジョブリポジトリと処理データベースは同じトランザクションには含まれないため、処理後、ジョブリポジトリが更新される前に障害が発生した場合、ステップが再実行され、処理が重複する可能性があります。この問題は、べき等処理や外部トランザクション管理(JTA など)によって軽減できます。 |