Spring Batch

A lightweight, comprehensive batch framework designed to enable the development of robust batch applications vital for the daily operations of enterprise systems.

Quick Start
Fork me on GitHub

Spring Batch provides reusable functions that are essential in processing large volumes of records, including logging/tracing, transaction management, job processing statistics, job restart, skip, and resource management. It also provides more advanced technical services and features that will enable extremely high-volume and high performance batch jobs through optimization and partitioning techniques. Simple as well as complex, high-volume batch jobs can leverage the framework in a highly scalable manner to process significant volumes of information.

Features

  • Transaction management
  • Chunk based processing
  • Declarative I/O
  • Start/Stop/Restart
  • Rety/Skip
  • Web based administration interface (Spring Batch Admin)

Quick Start

Download

The recommended way to get started using spring-batch in your project is with a dependency management system – the snippet below can be copied and pasted into your build. Need help? See our getting started guides on building with Maven and Gradle.

The quickest way to get started with Spring Batch is to use Spring Boot.

  1. Once your build process is setup (using either Maven or Gradle) using Spring Boot, add the batch starter dependency

    <!-- Maven -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-batch</artifactId>
    </dependency>
    
    // Gradle
    compile("org.springframework.boot:spring-boot-starter-batch")
    
  2. Create a configuration class to configure your job

    @Configuration
    @EnableBatchProcessing
    @EnableAutoConfiguration
    public class BatchConfiguration {
    
      @Autowired
      private JobBuilderFactory jobBuilderFactory;
    
      @Autowired
      private StepBuilderFactory stepBuilderFactory;
    
      @Bean
      public Step step1() {
        return stepBuilderFactory.get("step1")
            .tasklet(new Tasklet() {
              public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext)
                return null;
              }
            )
            .build();
      }
    
      @Bean
      public Job job(Step step1) throws Exception {
        return jobBuilderFactory.get("job1")
            .incrementer(new RunIdIncrementer())
            .start(step1)
            .end()
            .build();
      }
    }
    
  3. Create a main class to run your batch job from

    public class Main {
      public static void main(String [] args) {
        System.exit(SpringApplication.exit(SpringApplication.run(
            BatchConfiguration.class, args)));
      }
    }
    
  4. You can now build your project and run it via java -jar <JAR_NAME> where <JAR_NAME> is the name of the jar your build system generates.

You can read more about using Spring Boot with Spring Batch in the Getting Started Guide: Creating a Batch Service.