SpringBatchのTaskletに引数を渡す方法
Taskletは、Spring Batchにおいてステップの単一のタスクを実行するために使用されるインターフェースです。
このTaskletに引数を渡す方法はいくつかありますが、最も一般的な方法は、JobParametersを使用することです。
JobParametersを使用して引数を渡す
JobParametersは、バッチジョブの実行時に渡されるパラメータを保持するために使用されます。
これらのパラメータは、バッチの各ステップでアクセスすることができ、Tasklet内で利用することができます。
1. JobParametersを作成する
まず、バッチジョブの実行時に必要なパラメータを設定します。
これは、JobLauncherにパラメータを渡す際に行います。
JobParameters jobParameters = new JobParametersBuilder() .addString("param1", "value1") .addLong("param2", 123L) .toJobParameters();
このコードでは、param1という名前で文字列パラメータ、param2という名前で数値パラメータを設定しています。
2. Tasklet内でJobParametersを取得する
次に、Taskletの中でJobParametersを取得し、その値を使用します。
Taskletのexecuteメソッドは、StepContributionとChunkContextを引数に取りますが、ChunkContextからJobParametersを取得できます。
import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; import org.springframework.batch.core.step.tasklet.Tasklet; import org.springframework.batch.repeat.RepeatStatus; public class MyTasklet implements Tasklet { @Override public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception { // JobParametersを取得 String param1 = chunkContext.getStepContext() .getJobParameters() .get("param1") .toString(); Long param2 = Long.parseLong(chunkContext.getStepContext() .getJobParameters() .get("param2") .toString()); // 取得したパラメータを使用して処理を行う System.out.println("param1: " + param1); System.out.println("param2: " + param2); return RepeatStatus.FINISHED; } }
ここで、chunkContext.getStepContext().getJobParameters()を通じてJobParametersを取得し、指定されたキーで値を取得しています。
取得した値をTasklet内の処理で使用します。
まとめ
- JobParametersを使用してバッチジョブにパラメータを渡す。
- Tasklet内でChunkContextからJobParametersを取得し、必要なパラメータを使用する。
この方法により、Taskletに柔軟にパラメータを渡して、ジョブの実行ごとに異なるデータを使用して処理を行うことができます。