一番シンプルな Spring Batch 6 の Chunk 処理例[プログラミング]
(2026-07-10 18:21:49) by shinoda
< ページ移動: 1 2 3 >
Chunk(チャンク)処理の基本通り、
- ItemReader: Oracle Database からユーザー一覧(ID、名前、電話番号)を読み込む
- ItemProcessor: 電話番号が携帯電話番号だったときは、番号の後ろに'(携帯)'とつける加工処理
- ItemWriter: 読み込んだデータ(加工されたものもあり)を CSV ファイルに出力
という 3ステップ構成。
ただし、データが 1件もなかったときの処理や、CSV 出力に失敗したときの例外処理など、色々本物の業務バッチ処理としては足らない機能がたくさんあるので、それを勉強しながら少しずつ実装していくつもり。
まずは、そういう勉強の基盤になるソースということで、メモ代わりに貼っておく。
(プロジェクト名は 'BatchDb2Csv1')
とりあえず、
こういうデータを Oracle Database から読み込んで、このエントリのバッチを走らせたら、
こういう CSV ファイルが吐かれます。
■application.properties
spring.application.name=BatchDB2CSV1
# Oracle 接続設定
spring.datasource.url=jdbc:oracle:thin:@localhost:1521/XEPDB1
spring.datasource.username=tester
spring.datasource.password=tester01
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
# アプリ起動時にSpring Batchのジョブを自動実行する
spring.batch.job.enabled=true
# 【重要】Spring Batch等の管理テーブルを自動作成させる設定
spring.sql.init.mode=always
# Spring Boot DevToolsの自動再起動を無効化する(終了前に一時停止状態になるので)
spring.devtools.restart.enabled=false
YAML形式の方がお好みの方もいらっしゃるでしょうが、俺はこっちが好み。
どうも、半角スペースでインデント(字下げ)するのが(^^; Python 界隈の人は抵抗ないでしょうが(^^;;
■BatchDb2Csv1Application.java
package com.netandfield.test;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class BatchDb2Csv1Application {
public static void main(String[] args) {
SpringApplication.run(BatchDb2Csv1Application.class, args);
}
}
■Dto/TUserDto.java
package com.netandfield.test.Dto;