Springバッチタスクレットの例

Spring Batch Taskletの例

Springバッチでは、Taskletはインターフェースであり、ステップ実行の前後にリソースをクリーンアップまたはセットアップするなど、単一のタスクのみを実行するために呼び出されます。 この例では、バッチジョブの完了後にTaskletを使用してリソース(フォルダー)をクリーンアップする方法を示します。

P.S The FileDeletingTasklet example below is taken from the Spring Batch samples project.

1. タスクレットの例

Taskletインターフェースを実装し、指定されたディレクトリー内のすべてのファイルを削除するJavaクラス。

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 KB)