Spring Batchとは、バッチ処理をつかさどるアプリケーションフレームワークである。Springの特徴であるDIコンテナ、AOP、トランザクション管理機能をベースに、バッチ処理を実行するうえで必要な機能を提供している。
詳細はプログラムを作りながら、追って説明していきます。
Spring Batchのプロジェクトを作る
プロジェクトを作成する
http://start.spring.io/
でひな形のアプリケーションを作ります。
依存関係に「Batch」を追加して作成します。
実行する
作成したプロジェクトをそのまま実行すると以下のようなエラーが出ます。
これは、SpringBatchがジョブの状態を管理するために、データベースを利用しているために発生するものです。
Description:
Cannot determine embedded database driver class for database type NONE
Action:
If you want an embedded database please put a supported one on the classpath. If you have database settings to be loaded from a particular profile you may need to active it (no profiles are currently active).
DBの設定を追加する
とりあえず動かすことを優先して、今回はH2を使ってみます。
build.gradleに以下を追加する。
compile('com.h2database:h2')
application.ymlの記述を追加する
spring:
datasource:
driverClassName: org.h2.Driver
url: jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
username: sa
password:
ここまでやれば、実行する準備は完了です。
いろいろなパターンを実装する
実装方法のパターン
Spring Batchを利用した実装方法には、以下2種類があります。
タスクレットモデル
自由に処理を記述する方式である。
基本お作法にのっとれば何でも実装できます。
チャンクモデル
大量データを効率よく処理するための機構です。
一定件数のデータをまとめて入力/加工/出力する方式。入力->加工->出力といった処理の流れを定型化し、一部を実装するだけど、ジョブを作ることができます。
起動方法のパターン
Spring Batchで実装したジョブは、いろいろな方法で起動することができます。