Spring Batch Tasklet Beispiel

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)