このバージョンはまだ開発中であり、まだ安定しているとは見なされていません。最新の安定バージョンについては、Spring Batch ドキュメント 5.2.3 を使用してください! |
バッチインフラストラクチャ構成
前述の通り、Spring Batch はジョブとステップを実行するために、JobOperator
や JobRepository
など、いくつかのインフラストラクチャ Bean に依存しています。これらの Bean を手動で定義することも可能ですが、@EnableBatchProcessing
アノテーションや DefaultBatchConfiguration
クラスを使用して基本設定を提供する方がはるかに簡単です。
デフォルトでは、Spring Batch は ResourcelessJobRepository
実装に基づいたリソースレスなバッチインフラストラクチャ構成を提供します。データベースベースのジョブリポジトリを使用する場合は、JobRepository の構成セクションに従って、@EnableJdbcJobRepository
/ @EnableMongoJobRepository
アノテーション、または同等のクラス JdbcDefaultBatchConfiguration
/ MongoDefaultBatchConfiguration
を使用できます。
アノテーションベースの構成
@EnableBatchProcessing
アノテーションは、Spring ファミリーの他の @Enable*
アノテーションと同様に機能します。この場合、@EnableBatchProcessing
はバッチジョブを構築するための基本構成を提供します。この基本構成内では、StepScope
と JobScope
のインスタンスが作成され、さらにいくつかの Bean がオートワイヤードで利用可能になります。
JobRepository
:jobRepository
という名前の BeanJobOperator
:jobOperator
という名前の BeanJobRegistry
:jobRegistry
という名前の Bean
Java 構成クラスで @EnableBatchProcessing
アノテーションを使用する方法の例を次に示します。
@Configuration
@EnableBatchProcessing
public class MyJobConfiguration {
@Bean
public Job job(JobRepository jobRepository) {
return new JobBuilder("myJob", jobRepository)
//define job flow as needed
.build();
}
}
@EnableBatchProcessing
アノテーションの属性を使用して、任意のインフラストラクチャ Bean の構成をカスタマイズできます。
@EnableBatchProcessing アノテーションを付与する必要がある設定クラスは 1 つだけです。このアノテーションを付与したクラスを作成すれば、前述の設定がすべて揃います。 |
プログラムによる構成
アノテーションベースの設定と同様に、インフラストラクチャ Bean をプログラム的に設定する方法は、DefaultBatchConfiguration
クラスを通じて提供されます。このクラスは @EnableBatchProcessing
が提供するものと同じ Bean を提供し、バッチジョブを設定するための基本クラスとして使用できます。以下のスニペットは、その典型的な使用例です。
@Configuration
class MyJobConfiguration extends DefaultBatchConfiguration {
@Bean
public Job job(JobRepository jobRepository) {
return new JobBuilder("myJob", jobRepository)
// define job flow as needed
.build();
}
}
必要な setter をオーバーライドすることで、任意のインフラストラクチャ Bean の構成をカスタマイズできます。
@EnableBatchProcessing は DefaultBatchConfiguration と一緒に使用しないでください。@EnableBatchProcessing を介して Spring Batch を構成する宣言的な方法を使用するか、DefaultBatchConfiguration を継承するプログラムによる方法を使用する必要がありますが、両方の方法を同時に使用することはできません。 |