Spring Batch Hörer Beispiel

Spring Batch Listener Beispiel

spring-batch-listeners

In Spring Batch gibt es sechs "Listener", die die Step-Ausführung abfangen. Ich glaube, der Klassenname sollte selbsterklärend sein.

  1. StepExecutionListener

  2. ItemReadListener

  3. ItemProcessListener

  4. ItemWriteListener

  5. ChunkListener

  6. 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 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. 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)