Spring Batch 6 でパラメータを渡して起動[プログラミング]
(2026-07-14 20:15:26) by shinoda


< ページ移動: 1 2 3 4 >

Spring Batch 6 のバッチ処理にパラメータ(ジョブ引数)を渡す方法。
例えばファイルパスなど、毎回違う値を渡すときに推奨されるやり方でコーディングしてみる。(reader や write などの Step で指定する(受け取る)やり方。今回は processor でジョブ引数を受け取るか形)

「Spring Batch 6 で Listener を追加してログを出す」で修正したバッチプログラムに修正を加える。(修正点のみ記述するので、全体のソースが見たい人は、元ネタのページを手繰ってくださいませ)

修正点は以下のとおり。

■import の追加

import org.springframework.batch.core.configuration.annotation.StepScope; //追加
import org.springframework.beans.factory.annotation.Value; //追加


■processor の修正

    @Bean
    @StepScope // ジョブ引数を受け取るために必須
    public ItemProcessor<UserCombinedDto, UserCombinedDto> processor(
                            @Value("#{jobParameters['models']}") Integer models,
                            @Value("#{jobParameters['modelName']}") String modelName) {
        return item -> {
            String phone = item.user_phone_number(); // DtoがRecordの場合のゲッター。通常のクラスなら .getUser_phone_number()

            // 電話番号が null でなく、かつ 090 または 080 で始まる場合
            if (phone != null && (phone.startsWith("090") || phone.startsWith("080"))) {
                // 表示名
                String displayName = "スマホ";
                // ジョブ引数をチェック
                if (models == null || "1".equals(models)) { // ジョブ引数未指定、あるいは models == 1
                    displayName = "携帯";
                }
                else {
                    if ("2".equals(models) && (modelName != null && !modelName.isEmpty())) {
                        // ジョブ引数 models = 2 で、modelName も指定されている
                        displayName = modelName;
                    }
                    else {
                        // ジョブ引数 models が 1でも 2でもない。または modelName が未指定
                        displayName = "未定義";
                    }
                }

< ページ移動: 1 2 3 4 >


コメント投稿
次の記事へ >
< 前の記事へ
TOPへ戻る

Powered by
MT4i 3.0.8