Spring Batch Tasklet example

In Spring batch, the Tasklet is an interface, which will be called to perform a single task only, like clean or set up resources before or after any step execution. In this example, we will show you how to use Tasklet to clean up the resource (folders) after a batch job is completed.

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

1. Tasklet Example

A Java class to implement Tasklet interface, and delete all the files in the given directory.

package com.mkyong.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;
  public void afterPropertiesSet() throws Exception {
	Assert.notNull(directory, "directory must be set");
  public RepeatStatus execute(StepContribution contribution, 
               ChunkContext chunkContext) throws Exception {
	File dir = directory.getFile();
	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

A batch job to perform following steps :

Step 1 – To read multiple files from csv/inputs/, and write it to somewhere.
Step 2 – After step 1 is completed, run fileDeletingTasklet to delete all the files from directory csv/inputs/.

  <job id="readMultiFileJob" xmlns="http://www.springframework.org/schema/batch">
	<step id="step1" next="deleteDir">
		<chunk reader="multiResourceReader" writer="flatFileItemWriter"
			commit-interval="1" />
	<step id="deleteDir">
		<tasklet ref="fileDeletingTasklet" />
  <bean id="fileDeletingTasklet" class="com.mkyong.tasklet.FileDeletingTasklet" >
	<property name="directory" value="file:csv/inputs/" />
  <bean id="multiResourceReader"
	class=" org.springframework.batch.item.file.MultiResourceItemReader">
	<property name="resources" value="file:csv/inputs/domain-*.csv" />
	<property name="delegate" ref="flatFileItemReader" />

Download Source Code

Download it – SpringBatch-Tasklet-Example.zip (13 KB)


  1. Spring Batch TaskletStep
  2. Tasklet JavaDoc
  3. Spring batch samples
Tags :

About the Author

Founder of Mkyong.com and HostingCompass.com, love Java and open source stuff. Follow him on Twitter, or befriend him on Facebook or Google Plus. If you like my tutorials, consider make a donation to these charities.


  • Pingback: water ionizer()

  • Pingback: car parking()

  • Pingback: laane penge nu()

  • Pingback: mp4 mobile porn()

  • Pingback: tvpackages.net()

  • Pingback: Click Here()

  • Pingback: tv online, online tv()

  • Pingback: streaming movies()

  • Pingback: Blue Coaster33()

  • test yz

    char [] charArr; // need to be initialize
    int [] lens = new int[charArr.length];

    public static longestPanlidrom(int rightMost, int currentMid, int length) {
    if(currentMid + length > rightMost) {
    if(charArr[currentMid – length] = charArr[rightMost])
    } else {
    if(charArr[currentMid – length] == char[currentMid + length]


  • Pingback: Transaction Management in Spring Batch Components()

  • http://[email protected] Ivan Tinajero

    Hi !!

    I was looking for some tutorials about java frameworks, specially spring and I found this site. This site is excellent, and it help me a lot with my project.

    Thanks a lot for share your knowledge.