Spring Batch (1)

最終更新日: 2020年3月14日
R8 | R9

Spring Batch とは

Spring Batch は次のような特徴をもったオープンソースのフレームワークです。

  • ジョブフローを定義できる。
  • ジョブの中断と再実行を制御できる。
  • 条件分岐による制御が行える。
  • ジョブステータス(状態)はデータベースで一元管理する。

つまり大量データを扱うバッチ処理で、エラー時の再実行処理および条件分岐を制御する必要がある場合に向いています。

開発者は Spring Batch フレームワークを学習し、その仕様に沿ったバッチプログラムを作成します。プログラミングの詳細は公式サイトを参考にしてください。

Wagbyとの連携

Wagby は Spring Batch フレームワークを同梱しています。Wagby の管理処理メニューから、Spring Batch のジョブステータスを検索、照会することができます。

バージョン

Wagby R8 は Spring Batch 3 を同梱しています。

対応データベース

Oracle, SQL Server, DB2, PostgreSQL, MySQL に対応しています。

実行例

ボタン押下により、Spring Batch フレームワークで稼働する Java プログラムを呼び出すサンプルを用意しました。(具体的なコードはこのあと説明します。)

図1 ボタン押下によりSpringBatchで稼働するバッチプログラムを呼び出すサンプル

実行するとコンソールにメッセージが出力され、バッチプログラムが終了します。

図2 プログラムが実行された

このサンプルは、Wagby が自動生成した CustomerService を使って Customer をデータベースから取得し、1件ずつ画面に表示したものです。コードの詳細は次ページで説明します。

管理テーブルを確認する

Spring Batch フレームワークで動作するように開発されたバッチプログラムは、実行後に「管理処理 > バッチジョブ」メニューからジョブの実行状況を確認することができます。

図3 管理処理メニュー

一つのバッチプログラムが実行されると「バッチジョブインスタンス」に、その結果が格納されます。これを検索します。

図4 バッチジョブインスタンスを確認する

バッチジョブインスタンスIDは、Spring Batch が採番します。

図5 バッチジョブインスタンス一覧

詳細画面から「バッチジョブ実行結果」を確認することができます。「作成時刻」「開始時刻」「終了時刻」「ステータス」「終了コード」が用意されています。"COMPLETED" は正常終了を意味します。

図6 バッチジョブインスタンス詳細表示

さらに「バッチジョブ実行詳細」「バッチジョブ実行パラメータ」「バッチステップ実行」情報を確認することができます。

図7 バッチジョブ実行結果詳細表示(1)
図8 バッチジョブ実行結果詳細表示(2)

「バッチステップ実行」詳細画面では、コミット回数や読み込み回数、書き込み回数といった情報を確認することができます。

図9 バッチステップ実行詳細画面

利用時に準備する設定 8.4.0

application.properties のカスタマイズ 8.4.0

R8.4以降のWagbyで必要になります。開発者は customize/resources/myapplication.properties を用意し、次の行を含めるようにしてください。

spring.main.allow-bean-definition-overriding=true