Spring Batch exhibit a layered architecture and it comprises of three major high level components: Application, Core and Infrastructure.
The application layer contains all the batch job configurations, custom codes for business logic and job meta information developed by Application developers.
The Batch Core has the core runtime classes necessary to launch and control any batch job. Some of the core runtime classes include JobLauncher, Job, and Step implementations.
The infrastructure contains API for common readers and writers, and services for retrying on failure, repeat jobs etc. The infrastructure layer are used both by application developers(ItemReader and ItemWriter) and the core framework itself for controlling the batch job such as Retry, repeat.
Thus Batch Core and Application layers are built on top of Infrastructure layer.