Пример слушателей Spring Batch
В пакете Spring есть шесть «слушателей», которые перехватывают выполнение шага, я считаю, что имя класса должно быть самоочевидным.
-
StepExecutionListener
-
ItemReadListener
-
ItemProcessListener
-
ItemWriteListener
-
ChunkListener
-
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 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. Пакетные работы
Пакетная работа, прикрепленная выше трех слушателей.
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 КБ)