Spring Batch Tasklet Beispiel
Im Spring-Batch istTasklet
eine Schnittstelle, die aufgerufen wird, um nur eine einzelne Aufgabe auszuführen, z. B. das Bereinigen oder Einrichten von Ressourcen vor oder nach einer Schrittausführung. In diesem Beispiel zeigen wir Ihnen, wie SieTasklet
verwenden, um die Ressource (Ordner) nach Abschluss eines Stapeljobs zu bereinigen.
P.S The FileDeletingTasklet
example below is taken from the Spring Batch samples project.
1. Tasklet Beispiel
Eine Java-Klasse zum Implementieren derTasklet
-Schnittstelle und zum Löschen aller Dateien im angegebenen Verzeichnis.
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. Batch-Jobs
Ein Stapeljob, der die folgenden Schritte ausführt:
Step 1 - Um mehrere Dateien auscsv/inputs/
zu lesen und irgendwohin zu schreiben.
Step 2 - Führen Sie nach Abschluss von Schritt 1fileDeletingTasklet
aus, um alle zu löschen Dateien aus dem Verzeichniscsv/inputs/
.
spring-batch-job.xml
Quellcode herunterladen
Laden Sie es herunter -SpringBatch-Tasklet-Example.zip (13 KB)