Spring Batch – A Batch Framework Introduction

Spring Batch

                     In this article we will see Spring Batch, a batch framework built on top of Spring framework. Before getting into Spring Batch, let us understand What is batch programming? A batch application is one which will perform set of jobs without manual intervention. Let us take typical shopping site where we will get product catalog feed as a flat file. We need to process the feed file and upload the data to shopping site product catalog database. In this case we can write set of tasks to read the feed file, transform the data and then upload it to database behind the scenes. Spring Batch framework provides necessary infrastructure to accomplish such kind of batch processing. Now, we will see the terminology used in Spring Batch framework.

Job: A job is a process which will perform bunch of tasks. For example, Product Catalog processing is a job. This job has tasks like, basic product info import task, product specifications import task, price info import task etc..

Step: A step is an individual piece of task. For example, import price info as part of product catalog import job.

Item: Item is an individual entity. For example, product is an item in the product catalog.

Chunk: Bunch of items are nothing but a chunk.

Job Repository: Job repository keeps track of job execution, status etc.. It has information such as job success, failure, when the failure occured, from where the job has to restart etc…

ItemReader: Reader reads the data from any data source(eg: flat file, xml file, database etc..)

ItemProcessor: Processor transforms the data before writing it to the data source. The ItemProcessor is optional in the Spring Batch job configuration.

ItemWriter: Writer writes the processed items to data source(eg: flat file, xml file, database etc…).

The below sequence diagram depicts the interaction of ItemReader, ItemProcessot and ItemWriter.

Spring Batch

The ItemReader, ItemProcessor and the ItemWriter interface implementations has to be provided to the Spring Batch job. The sample job configuration is given below.

<batch:job id="job1">
   <batch:step id="step1">
      <batch:tasklet transaction-manager="transactionManager">
         <batch:chunk reader="reader" writer="writer" processor="processor" commit-interval="1" />
     </batch:tasklet>
   </batch:step>
</batch:job>

The features of Spring Batch is given below:

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

In the coming articles will see sample Spring Batch applications. Till then stay tune.

Siva Janapati is an Architect with experience in building Cloud Native Microservices architectures, Reactive Systems, Large scale distributed systems, and Serverless Systems. Siva has hands-on in architecture, design, and implementation of scalable systems using Cloud, Java, Go lang, Apache Kafka, Apache Solr, Spring, Spring Boot, Lightbend reactive tech stack, APIGEE edge & on-premise and other open-source, proprietary technologies. Expertise working with and building RESTful, GraphQL APIs. He has successfully delivered multiple applications in retail, telco, and financial services domains. He manages the GitHub(https://github.com/2013techsmarts) where he put the source code of his work related to his blog posts.

Tagged with:
Posted in Spring, Spring Batch
2 comments on “Spring Batch – A Batch Framework Introduction
  1. Anonymous says:

    Really appreciate your blog post.

  2. Henrymckenney says:

    Thanks for sharing the information.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

DZone

DZone MVB

Java Code Geeks
Java Code Geeks
%d bloggers like this: