CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-org-springframework-boot--spring-boot-starter-batch

Spring Boot starter that provides comprehensive batch processing capabilities for enterprise Java applications with auto-configuration, job management, and database integration.

Pending
Overview
Eval results
Files

auto-configuration.mddocs/

Auto-Configuration

Spring Boot Batch Starter's auto-configuration automatically sets up Spring Batch infrastructure when the necessary dependencies are present on the classpath.

Capabilities

BatchAutoConfiguration

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=false

SpringBootBatchConfiguration

Internal 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();
}

Database Initialization Configuration

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();
}

Activation Conditions

Auto-configuration activates when:

  1. Required Classes: JobLauncher, DataSource, and DatabasePopulator are on classpath
  2. Required Beans: DataSource and PlatformTransactionManager beans are available
  3. Exclusion Conditions: No DefaultBatchConfiguration bean or @EnableBatchProcessing annotation present
  4. Property Conditions: spring.batch.job.enabled is not explicitly set to false

Customization Points

  • Use @BatchDataSource to specify alternative data source for batch metadata
  • Use @BatchTransactionManager to specify alternative transaction manager
  • Use @BatchTaskExecutor to specify alternative task executor
  • Implement BatchConversionServiceCustomizer to customize type conversion
  • Configure ExecutionContextSerializer bean for custom serialization
  • Configure JobParametersConverter bean for custom parameter conversion

Integration Dependencies

Auto-configuration integrates with:

  • Spring Boot Starter JDBC: Provides DataSource and database connectivity
  • Spring Batch Core: Provides core batch processing framework
  • Spring Boot Actuator: Enables monitoring and management endpoints
  • Micrometer: Provides observability and metrics collection

Install with Tessl CLI

npx tessl i tessl/maven-org-springframework-boot--spring-boot-starter-batch

docs

auto-configuration.md

configuration-properties.md

customization.md

index.md

job-execution.md

tile.json