Spring Boot starter that provides comprehensive batch processing capabilities for enterprise Java applications with auto-configuration, job management, and database integration.
—
Spring Boot Batch Starter's auto-configuration automatically sets up Spring Batch infrastructure when the necessary dependencies are present on the classpath.
Main auto-configuration class that provides comprehensive Spring Batch setup with minimal configuration required.
/**
* Auto-configuration for Spring Batch. Automatically configures batch processing
* infrastructure when JobLauncher, DataSource, and DatabasePopulator are available.
*/
@AutoConfiguration(after = { HibernateJpaAutoConfiguration.class, TransactionAutoConfiguration.class })
@ConditionalOnClass({ JobLauncher.class, DataSource.class, DatabasePopulator.class })
@ConditionalOnBean({ DataSource.class, PlatformTransactionManager.class })
@ConditionalOnMissingBean(value = DefaultBatchConfiguration.class, annotation = EnableBatchProcessing.class)
@EnableConfigurationProperties(BatchProperties.class)
public class BatchAutoConfiguration {
/**
* Creates JobLauncherApplicationRunner for automatic job execution on startup
*/
@Bean
@ConditionalOnMissingBean
@ConditionalOnBooleanProperty(name = "spring.batch.job.enabled", matchIfMissing = true)
public JobLauncherApplicationRunner jobLauncherApplicationRunner(
JobLauncher jobLauncher,
JobExplorer jobExplorer,
JobRepository jobRepository,
BatchProperties properties);
/**
* Creates exit code generator for mapping job execution results to application exit codes
*/
@Bean
@ConditionalOnMissingBean(ExitCodeGenerator.class)
public JobExecutionExitCodeGenerator jobExecutionExitCodeGenerator();
}Usage Examples:
// Auto-configuration activates when these components are present
@SpringBootApplication
public class BatchApplication {
// No explicit batch configuration needed - auto-configured automatically
@Bean
public Job myJob(JobRepository jobRepository, Step myStep) {
return new JobBuilder("myJob", jobRepository)
.start(myStep)
.build();
}
}
// Disable automatic job execution
# application.properties
spring.batch.job.enabled=falseInternal configuration class that extends Spring Batch's DefaultBatchConfiguration with Spring Boot specific customizations.
/**
* Spring Boot specific batch configuration that customizes DefaultBatchConfiguration
* with application properties and Spring Boot conventions
*/
@Configuration(proxyBeanMethods = false)
static class SpringBootBatchConfiguration extends DefaultBatchConfiguration {
/**
* Constructor with dependency injection for all batch infrastructure components
*/
SpringBootBatchConfiguration(DataSource dataSource,
@BatchDataSource ObjectProvider<DataSource> batchDataSource,
PlatformTransactionManager transactionManager,
@BatchTransactionManager ObjectProvider<PlatformTransactionManager> batchTransactionManager,
@BatchTaskExecutor ObjectProvider<TaskExecutor> batchTaskExecutor,
BatchProperties properties,
ObjectProvider<BatchConversionServiceCustomizer> batchConversionServiceCustomizers,
ObjectProvider<ExecutionContextSerializer> executionContextSerializer,
ObjectProvider<JobParametersConverter> jobParametersConverter);
/**
* Provides the DataSource for batch metadata storage
*/
protected DataSource getDataSource();
/**
* Provides the transaction manager for batch operations
*/
protected PlatformTransactionManager getTransactionManager();
/**
* Provides custom table prefix for batch metadata tables
*/
protected String getTablePrefix();
/**
* Controls transaction state validation behavior
*/
protected boolean getValidateTransactionState();
/**
* Sets transaction isolation level for job metadata creation
*/
protected Isolation getIsolationLevelForCreate();
/**
* Provides customized conversion service for batch operations
*/
protected ConfigurableConversionService getConversionService();
/**
* Provides custom execution context serializer if configured
*/
protected ExecutionContextSerializer getExecutionContextSerializer();
/**
* Provides custom job parameters converter if configured
*/
protected JobParametersConverter getJobParametersConverter();
/**
* Provides custom task executor for batch operations if configured
*/
protected TaskExecutor getTaskExecutor();
}Automatic database schema initialization for Spring Batch metadata tables.
/**
* Configuration for automatic database schema initialization
*/
@Configuration(proxyBeanMethods = false)
@Conditional(OnBatchDatasourceInitializationCondition.class)
static class DataSourceInitializerConfiguration {
/**
* Creates database initializer for batch schema setup
*/
@Bean
@ConditionalOnMissingBean
public BatchDataSourceScriptDatabaseInitializer batchDataSourceInitializer(
DataSource dataSource,
@BatchDataSource ObjectProvider<DataSource> batchDataSource,
BatchProperties properties);
}
/**
* Condition that determines when batch database initialization should occur
*/
static class OnBatchDatasourceInitializationCondition extends OnDatabaseInitializationCondition {
public OnBatchDatasourceInitializationCondition();
}Auto-configuration activates when:
JobLauncher, DataSource, and DatabasePopulator are on classpathDataSource and PlatformTransactionManager beans are availableDefaultBatchConfiguration bean or @EnableBatchProcessing annotation presentspring.batch.job.enabled is not explicitly set to false@BatchDataSource to specify alternative data source for batch metadata@BatchTransactionManager to specify alternative transaction manager@BatchTaskExecutor to specify alternative task executorBatchConversionServiceCustomizer to customize type conversionExecutionContextSerializer bean for custom serializationJobParametersConverter bean for custom parameter conversionAuto-configuration integrates with:
Install with Tessl CLI
npx tessl i tessl/maven-org-springframework-boot--spring-boot-starter-batch