このバージョンはまだ開発中であり、まだ安定しているとは見なされていません。最新の安定バージョンについては、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 がオートワイヤードで利用可能になります。

  • JobRepositoryjobRepository という名前の Bean

  • JobOperatorjobOperator という名前の Bean

  • JobRegistryjobRegistry という名前の 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 を継承するプログラムによる方法を使用する必要がありますが、両方の方法を同時に使用することはできません。