Spring Batch Listener Beispiel
In Spring Batch gibt es sechs "Listener", die die Step-Ausführung abfangen. Ich glaube, der Klassenname sollte selbsterklärend sein.
-
StepExecutionListener
-
ItemReadListener
-
ItemProcessListener
-
ItemWriteListener
-
ChunkListener
-
SkipListener
1. Listener-Beispiel
Drei Beispiele für Hörer: Sie müssen nur eine Nachricht ausdrucken.
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. Batch-Jobs
Ein Stapeljob, der über drei Listenern angehängt ist.
spring-batch-job.xml
Angenommen, 3 Datensätze aus einer CSV-Datei werden geladen und irgendwo geschrieben. Hier ist die Konsolenausgabe:
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
Quellcode herunterladen
Laden Sie es herunter -SpringBatch-Listener-Example.zip (14 KB)