Spring Batch Architecture
Spring Batch is designed to support extensibility so as
to make the development of Batch applications easy for
developers. The figure below shows three major
high-level components of Spring Batch: Application,
Core, and Infrastructure.
Application - The Application component
contains all batch jobs and custom code which are
written using Spring Batch.
Core - The Core component contains
implementations of JobLauncher, Job, and Step. It also
contains runtime classes required for launching and
managing batch jobs.
Infrastructure - The Infrastructure
component provides common readers, writers and services
which are used by Core Framework and custom code in the
form of ItemReader and ItemWriter.
Key Principle to consider when building a batch
We should keep the following things in mind before building a batch
Minimize use of too many input/output operations
that may increase use of system resources.
Keep processing and storing of data physically close
to each other.
Try to keep the logical structures as simple as
possible in a single batch application.
- Avoid processing of same data twice.
Validate the data after processing to maintain data
Perform stress-testing on production like
Allocate enough memory before running the batch
application in order to avoid reallocation of memory
during processing as it will be time consuming.
Make use of internal memory to perform as many
operations as possible.
The deployment file of spring batch application is
usually a Jar file built using maven or gradle.