Пример Spring Batch Tasklet
В пакете SpringTasklet
- это интерфейс, который будет вызываться для выполнения только одной задачи, например очистки или настройки ресурсов до или после выполнения любого шага. В этом примере мы покажем вам, как использоватьTasklet
для очистки ресурса (папок) после завершения пакетного задания.
P.S The FileDeletingTasklet
example below is taken from the Spring Batch samples project.
1. Пример тасклета
Класс Java для реализации интерфейсаTasklet
и удаления всех файлов в данном каталоге.
FileDeletingTasklet.java
package com.example.tasklet; import java.io.File; import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.UnexpectedJobExecutionException; import org.springframework.batch.core.scope.context.ChunkContext; import org.springframework.batch.core.step.tasklet.Tasklet; import org.springframework.batch.repeat.RepeatStatus; import org.springframework.beans.factory.InitializingBean; import org.springframework.core.io.Resource; import org.springframework.util.Assert; public class FileDeletingTasklet implements Tasklet, InitializingBean { private Resource directory; @Override public void afterPropertiesSet() throws Exception { Assert.notNull(directory, "directory must be set"); } @Override public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception { File dir = directory.getFile(); Assert.state(dir.isDirectory()); File[] files = dir.listFiles(); for (int i = 0; i < files.length; i++) { boolean deleted = files[i].delete(); if (!deleted) { throw new UnexpectedJobExecutionException( "Could not delete file " + files[i].getPath()); } else { System.out.println(files[i].getPath() + " is deleted!"); } } return RepeatStatus.FINISHED; } public Resource getDirectory() { return directory; } public void setDirectory(Resource directory) { this.directory = directory; } }
2. Пакетные работы
Пакетное задание для выполнения следующих шагов:
Step 1 - Чтобы прочитать несколько файлов изcsv/inputs/
и записать их куда-нибудь.
Step 2 - После завершения шага 1 запуститеfileDeletingTasklet
, чтобы удалить все файлы из каталогаcsv/inputs/
.
spring-batch-job.xml
Скачать исходный код
Скачать -SpringBatch-Tasklet-Example.zip (13 КБ)