Exemple de Tasklet Spring Batch
Dans Spring batch, leTasklet
est une interface, qui sera appelée pour effectuer une seule tâche uniquement, comme nettoyer ou configurer des ressources avant ou après l'exécution de toute étape. Dans cet exemple, nous allons vous montrer comment utiliserTasklet
pour nettoyer la ressource (les dossiers) après la fin d'un travail par lots.
P.S The FileDeletingTasklet
example below is taken from the Spring Batch samples project.
1. Exemple de Tasklet
Une classe Java pour implémenter l'interfaceTasklet
et supprimer tous les fichiers dans le répertoire donné.
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. Emplois par lots
Un travail par lots pour effectuer les étapes suivantes:
Step 1 - Pour lire plusieurs fichiers decsv/inputs/
et les écrire quelque part.
Step 2 - Une fois l'étape 1 terminée, exécutezfileDeletingTasklet
pour supprimer tous les fichiers du répertoirecsv/inputs/
.
spring-batch-job.xml
Télécharger le code source
Téléchargez-le -SpringBatch-Tasklet-Example.zip (13 Ko)