Пример слушателей Spring Batch

Пример слушателей Spring Batch

spring-batch-listeners

В пакете Spring есть шесть «слушателей», которые перехватывают выполнение шага, я считаю, что имя класса должно быть самоочевидным.

  1. StepExecutionListener

  2. ItemReadListener

  3. ItemProcessListener

  4. ItemWriteListener

  5. ChunkListener

  6. SkipListener

1. Пример слушателя

Три примера слушателя, ничего не делайте, только распечатайте сообщение.

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. Пакетные работы

Пакетная работа, прикрепленная выше трех слушателей.

spring-batch-job.xml

    
    
    

    
    
        
        
            
            
            
            
            
        
    
    

Предположим, что 3 записи из CSV-файла загружены и запишите его куда-нибудь, вот вывод консоли:

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 КБ)