86. Batch Applications

This section answers questions that arise from using Spring Batch with Spring Boot.

[Note]Note

By default, batch applications require a DataSource to store job details. If you want to deviate from that, you need to implement BatchConfigurer. See The Javadoc of @EnableBatchProcessing for more details.

For more about Spring Batch, see the Spring Batch project page.

86.1 Execute Spring Batch Jobs on Startup

Spring Batch auto-configuration is enabled by adding @EnableBatchProcessing (from Spring Batch) somewhere in your context.

By default, it executes all Jobs in the application context on startup (see JobLauncherCommandLineRunner for details). You can narrow down to a specific job or jobs by specifying spring.batch.job.names (which takes a comma-separated list of job name patterns).

[Tip]Specifying job parameters on the command line

Unlike command line option arguments that set properties in the Environment (i.e. by starting with --, such as --my-property=value), job parameters have to be specified on the command line without dashes (e.g. jobParam=value).

If the application context includes a JobRegistry, the jobs in spring.batch.job.names are looked up in the registry instead of being autowired from the context. This is a common pattern with more complex systems, where multiple jobs are defined in child contexts and registered centrally.

See BatchAutoConfiguration and @EnableBatchProcessing for more details.