Spring Batch にバリデーションチェックを追加[プログラミング]
(2026-07-16 21:27:27) by shinoda
< ページ移動: 1 2 3 >
Spring Batch 6 のプログラムにデータ検証機能(Validation)を実装してみる。
パラメータ(ジョブ引数)のチェックをするのだが、
- パラメータとして渡せるのは models、modelName の二つだけ
- 必須項目はなし
- models が設定されたときは、数値でなければならない(異常終了)
- modelName の中身はなんでも良い
という仕様で組み込んでみる。(元ネタは「出力項目を増やすようちょっと修正版 Spring Batch」→「Spring Batch 6 で Listener を追加してログを出す」のソース)
■Validator/OptionalValidator.java
単純な必須チェックなどではない、独自チェックを記述したクラス
package com.netandfield.test.Validator;
import org.springframework.batch.core.job.parameters.InvalidJobParametersException;
import org.springframework.batch.core.job.parameters.JobParameters;
import org.springframework.batch.core.job.parameters.JobParametersValidator;
public class OptionalValidator implements JobParametersValidator {
@Override
public void validate(JobParameters parameters) throws InvalidJobParametersException {
// パラメーター取得
String models = parameters.getString("models");;
// 存在チェック(必須項目ではない)
if (models == null || models.isEmpty()) {
return;
}
// 存在していれば数値でなければならない
try {
Integer.parseInt(models);
}
catch(NumberFormatException e) {
throw new InvalidJobParametersException("Not Number: models=" + models);
}
}
}
■Config/BatchConfig.java
import の追加
import java.util.ArrayList;
import java.util.List;
import org.springframework.batch.core.job.parameters.CompositeJobParametersValidator;
import org.springframework.batch.core.job.parameters.DefaultJobParametersValidator;
import org.springframework.batch.core.job.parameters.JobParametersValidator;
import com.netandfield.test.Validator.OptionalValidator; // 作成した validator
バリデータの定義(使用可能なパラメータ(必須項目と任意項目))を追加
@Bean
public DefaultJobParametersValidator defaultValidator() {
// 1. 必須パラメータの配列
String[] requiredKeys = {}; // 必須項目はなし
// 2. 任意パラメータの配列
String[] optionalKeys = {"models", "modelName"};
// コンストラクタに(必須, 任意)の順番で渡す
return new DefaultJobParametersValidator(requiredKeys, optionalKeys);
}