Exemple d’auditeurs Spring Batch

Exemple d'écouteurs Spring Batch

spring-batch-listeners

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.

  1. StepExecutionListener

  2. ItemReadListener

  3. ItemProcessListener

  4. ItemWriteListener

  5. ChunkListener

  6. 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 items) {
        System.out.println("ItemWriteListener - beforeWrite");
    }

    @Override
    public void afterWrite(List items) {
        System.out.println("ItemWriteListener - afterWrite");
    }

    @Override
    public void onWriteError(Exception exception, List 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)