Spring batch Tasklet 例子(源码下载)
By:Roy.LiuLast updated:2013-12-04
在spring batch里面, Tasklet 是一个接口. 通常被调用去执行单个任务, 比如在在一个step之前或之后执行某一些动作, 作为测试,做了一个在一个job完成之后删除掉一些资源文件. 这个例子 FileDeletingTasklet 其实也可以在 spring batch 官方的例子中找到。
1. 首先实现 Tasklet接口
2. batch job 的定义:
有如下步骤:1, 从csv/inputs文件夹中读取多个文件,然后写到output文件夹中去。2. 在第一步完成之后,运行 fileDeletingTasklet 删除文件夹 csv/inputs
运行,得到如下结果:
注意事项,必须的jar包参考 上一篇文章: spring batch入门教程
在这个例子中,使用的是内存方式,不是数据库方式,另外在执行之前先删除outpus下的文件. 然后在运行app.java 中的main 方法,就可以得到上面的结果了。整个工程如下:

源代码下载:
Spring batch Tasklet 例子
1. 首先实现 Tasklet接口
package com.yihaomen.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 job 的定义:
有如下步骤:1, 从csv/inputs文件夹中读取多个文件,然后写到output文件夹中去。2. 在第一步完成之后,运行 fileDeletingTasklet 删除文件夹 csv/inputs
运行,得到如下结果:
INFO: Executing step: [deleteDir]
csv\inputs\domain-1-3-2013.csv is deleted!
csv\inputs\domain-2-3-2013.csv is deleted!
csv\inputs\domain-3-3-2013.csv is deleted!
十二月 04, 2013 7:43:50 下午 org.springframework.batch.core.launch.support.SimpleJobLauncher$1 run
INFO: Job: [FlowJob: [name=readMultiFileJob]] completed with the following parameters: [{}] and the following status: [COMPLETED]
Exit Status : COMPLETED
Exit Status : []
Done
注意事项,必须的jar包参考 上一篇文章: spring batch入门教程
在这个例子中,使用的是内存方式,不是数据库方式,另外在执行之前先删除outpus下的文件. 然后在运行app.java 中的main 方法,就可以得到上面的结果了。整个工程如下:

源代码下载:
Spring batch Tasklet 例子
From:一号门
Previous:Spring batch 入门学习教程(附源码)

COMMENTS