Course Overview
Students will be introduced using Spring Batch for processing batch jobs.
Course Prerequisites
Students should be experienced Java developers and be familiar with the Spring Framework. We recommend student to follow the Core Spring course before.
Outline
Introduction
- Introduction to Batch processing
- This use-cases for batch
- Introduction to Spring Batch
- Its relation with jsr-352
- Discuss batch concepts (job, step, etc)
- Understand job execution (instance, execution)
- Understand the role of job parameters
- Define steps (Tasklets and Chunks)
- Understand step execution
Your first project
- Set up a Spring Batch project (Spring Boot)
- Overview of XML and Java DSL to define jobs
- Understand the Tasklet interface
- Introduction to StepScope and JobScope
- Understand the Job Repository
- Define and use job parameters
Steps and Flows
- Define sequential flows
- Define conditional flows
- Understand the difference between BatchStatus and ExitStatus
- Using deciders
- Define reusable flows
- Splitting processing using split
- Stopping and interrupting processes (end, stop and fail)
- Define and register various listeners
- Comprehend job execution context and step execution context
- Saving state between job executions and step executions
- Sharing state between steps
Chunk-based Processing
- Understand the components that make up a chunk
- Understand a chunk step's life-cycle
- Define Item Readers
- Understand and define Item Processors
- Define Writers
- Define Item Stream implementations
- Work with flat files (csv, xml, json, …)
- Read multiple files
- Write multiple files (composite and classified)
- Read database data
- Understand the different between cursor and paged processing
- Writing to databases (batch)
- Discuss various processing idioms (transform, filter)
- Combining processors
- Data validation (including jsr-303)
Application Development
- Restarting jobs
- Handling exceptions
- Resilience with retry logic
- Skipping items
- Managing jobs programmatically using
JobLauncher
andJobOperator
- Discuss starting jobs (rest, schedulers etc.)
- Discuss writing unit and integration testing
Scalability
- Improving throughput options (chunk-size, commit interval, page size)
- Discuss Scalability options
- Use Multi-threaded steps (and understand its caveats)
- Define asynchronous processors
- Local and remote partitioning
- Discuss remote chunking