Exemple d'écouteurs Spring Batch
Dans Spring batch, il y a six «écouteurs» pour intercepter l'exécution des étapes, je pense que le nom de la classe devrait être explicite.
-
StepExecutionListener
-
ItemReadListener
-
ItemProcessListener
-
ItemWriteListener
-
ChunkListener
-
SkipListener
1. Exemple d'auditeur
Trois exemples d'auditeur, ne faites qu'imprimer un message.
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. Emplois par lots
Un travail par lots, attaché au-dessus de trois auditeurs.
spring-batch-job.xml
Supposons que 3 enregistrements d'un fichier csv soient chargés et écrivez-le quelque part, voici la sortie de la console:
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
Télécharger le code source
Téléchargez-le -SpringBatch-Listener-Example.zip (14 Ko)