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)