Spring Batchリスナーの例
Springバッチには、ステップ実行をインターセプトする6つの「リスナー」があります。クラス名は自明であるべきだと思います。
-
StepExecutionListener
-
ItemReadListener
-
ItemProcessListener
-
ItemWriteListener
-
ChunkListener
-
SkipListener
1. リスナーの例
リスナーの3つの例では、メッセージを出力するだけです。
CustomStepListener.java
package com.example.listeners; import org.springframework.batch.core.ExitStatus; import org.springframework.batch.core.StepExecution; import org.springframework.batch.core.StepExecutionListener; public class CustomStepListener implements StepExecutionListener { @Override public void beforeStep(StepExecution stepExecution) { System.out.println("StepExecutionListener - beforeStep"); } @Override public ExitStatus afterStep(StepExecution stepExecution) { System.out.println("StepExecutionListener - afterStep"); return null; } }
CustomItemReaderListener.java
package com.example.listeners; import org.springframework.batch.core.ItemReadListener; import com.example.Domain; public class CustomItemReaderListener implements ItemReadListener{ @Override public void beforeRead() { System.out.println("ItemReadListener - beforeRead"); } @Override public void afterRead(Domain item) { System.out.println("ItemReadListener - afterRead"); } @Override public void onReadError(Exception ex) { System.out.println("ItemReadListener - onReadError"); } }
CustomItemWriterListener.java
package com.example.listeners; import java.util.List; import org.springframework.batch.core.ItemWriteListener; import com.example.Domain; public class CustomItemWriterListener implements ItemWriteListener{ @Override public void beforeWrite(List extends Domain> items) { System.out.println("ItemWriteListener - beforeWrite"); } @Override public void afterWrite(List extends Domain> items) { System.out.println("ItemWriteListener - afterWrite"); } @Override public void onWriteError(Exception exception, List extends Domain> items) { System.out.println("ItemWriteListener - onWriteError"); } }
2. バッチジョブ
3つのリスナーの上に付加されたバッチジョブ。
spring-batch-job.xml
csvファイルから3つのレコードが読み込まれ、どこかに書き込むと仮定します。コンソール出力は次のとおりです。
StepExecutionListener - beforeStep ItemReadListener - beforeRead ItemReadListener - afterRead ItemWriteListener - beforeWrite ItemWriteListener - afterWrite ItemReadListener - beforeRead ItemReadListener - afterRead ItemWriteListener - beforeWrite ItemWriteListener - afterWrite ItemReadListener - beforeRead ItemReadListener - afterRead ItemWriteListener - beforeWrite ItemWriteListener - afterWrite StepExecutionListener - afterStep
ソースコードをダウンロード
ダウンロード–SpringBatch-Listener-Example.zip(14 KB)