Пример Spring Batch Tasklet

Пример 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 КБ)