or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

auto-configuration.mdconfiguration-properties.mdcustomization.mdindex.mdjob-execution.md
tile.json

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.

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
mavenpkg:maven/org.springframework.boot/spring-boot-starter-batch@3.5.x

To install, run

npx @tessl/cli install tessl/maven-org-springframework-boot--spring-boot-starter-batch@3.5.0

index.mddocs/

Spring Boot Batch Starter

Spring Boot Batch Starter provides comprehensive auto-configuration and infrastructure for Spring Batch applications. It automatically configures batch processing components including job repositories, job launchers, transaction management, and database schema initialization, enabling developers to quickly build robust batch processing applications.

Package Information

  • Package Name: spring-boot-starter-batch
  • Package Type: maven
  • Language: Java
  • Installation:
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-batch</artifactId>
      <version>3.5.3</version>
    </dependency>

Gradle:

implementation 'org.springframework.boot:spring-boot-starter-batch:3.5.3'

Core Imports

import org.springframework.batch.core.Job;
import org.springframework.batch.core.JobLauncher;
import org.springframework.batch.core.repository.JobRepository;
import org.springframework.boot.autoconfigure.batch.BatchProperties;
import org.springframework.boot.autoconfigure.batch.JobLauncherApplicationRunner;

Basic Usage

import org.springframework.batch.core.Job;
import org.springframework.batch.core.Step;
import org.springframework.batch.core.job.builder.JobBuilder;
import org.springframework.batch.core.repository.JobRepository;
import org.springframework.batch.core.step.builder.StepBuilder;
import org.springframework.batch.core.step.tasklet.Tasklet;
import org.springframework.batch.repeat.RepeatStatus;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.transaction.PlatformTransactionManager;

@SpringBootApplication
public class BatchApplication {
    
    public static void main(String[] args) {
        SpringApplication.run(BatchApplication.class, args);
    }
    
    @Bean
    public Job sampleJob(JobRepository jobRepository, Step sampleStep) {
        return new JobBuilder("sampleJob", jobRepository)
                .start(sampleStep)
                .build();
    }
    
    @Bean
    public Step sampleStep(JobRepository jobRepository, 
                          PlatformTransactionManager transactionManager) {
        return new StepBuilder("sampleStep", jobRepository)
                .tasklet(sampleTasklet(), transactionManager)
                .build();
    }
    
    @Bean
    public Tasklet sampleTasklet() {
        return (contribution, chunkContext) -> {
            System.out.println("Hello from Spring Batch!");
            return RepeatStatus.FINISHED;
        };
    }
}

Architecture

Spring Boot Batch Starter is built around several key components:

  • Auto-Configuration: BatchAutoConfiguration automatically configures batch infrastructure when Spring Batch is on the classpath
  • Job Execution: JobLauncherApplicationRunner automatically launches batch jobs on application startup
  • Configuration Properties: BatchProperties provides externalized configuration via spring.batch.* properties
  • Database Integration: Automatic schema initialization and transaction management for batch metadata
  • Observability: Integration with Spring Boot Actuator for monitoring and metrics
  • Customization Points: Qualifier annotations and customizer interfaces for advanced configuration

Capabilities

Auto-Configuration

Automatic configuration of Spring Batch infrastructure including job repository, job launcher, and transaction management with sensible defaults.

@AutoConfiguration
public class BatchAutoConfiguration {
    
    @Bean
    @ConditionalOnMissingBean
    public JobLauncherApplicationRunner jobLauncherApplicationRunner(
        JobLauncher jobLauncher, 
        JobExplorer jobExplorer,
        JobRepository jobRepository, 
        BatchProperties properties);
        
    @Bean
    @ConditionalOnMissingBean(ExitCodeGenerator.class)
    public JobExecutionExitCodeGenerator jobExecutionExitCodeGenerator();
}

Auto-Configuration

Configuration Properties

Externalized configuration for batch processing behavior, database settings, and job execution parameters.

@ConfigurationProperties("spring.batch")
public class BatchProperties {
    
    public Job getJob();
    public Jdbc getJdbc();
    
    public static class Job {
        public String getName();
        public void setName(String name);
    }
    
    public static class Jdbc {
        public boolean isValidateTransactionState();
        public void setValidateTransactionState(boolean validateTransactionState);
        public Isolation getIsolationLevelForCreate();
        public String getTablePrefix();
        public DatabaseInitializationMode getInitializeSchema();
    }
}

Configuration Properties

Job Execution Management

Automatic job launching capabilities with application startup integration and exit code generation.

public class JobLauncherApplicationRunner implements ApplicationRunner, InitializingBean {
    
    public void run(ApplicationArguments args) throws JobExecutionException;
    public void setJobName(String jobName);
    public void setJobParameters(JobParameters jobParameters);
    public void setJobParametersConverter(JobParametersConverter converter);
}

public class JobExecutionExitCodeGenerator 
    implements ApplicationListener<JobExecutionEvent>, ExitCodeGenerator {
    
    public void onApplicationEvent(JobExecutionEvent event);
    public int getExitCode();
}

Job Execution Management

Customization and Qualification

Qualifier annotations and customization interfaces for advanced configuration scenarios with multiple data sources or transaction managers.

@Qualifier
public @interface BatchDataSource {
}

@Qualifier  
public @interface BatchTransactionManager {
}

@Qualifier
public @interface BatchTaskExecutor {
}

@FunctionalInterface
public interface BatchConversionServiceCustomizer {
    void customize(ConfigurableConversionService configurableConversionService);
}

Customization and Qualification

Configuration

Application Properties

Key configuration properties for customizing batch behavior:

# Job execution
spring.batch.job.enabled=true
spring.batch.job.name=myBatchJob

# Database configuration  
spring.batch.jdbc.initialize-schema=embedded
spring.batch.jdbc.table-prefix=BATCH_
spring.batch.jdbc.validate-transaction-state=true
spring.batch.jdbc.isolation-level-for-create=default

Multiple Data Sources

When using multiple data sources, qualify the batch-specific data source:

@Bean
@BatchDataSource
@ConfigurationProperties("batch.datasource")
public DataSource batchDataSource() {
    return DataSourceBuilder.create().build();
}

Custom Job Parameters

Configure job parameters through application arguments or properties:

java -jar myapp.jar --job.parameter1=value1 --job.parameter2=value2

Types

public class JobExecutionEvent extends ApplicationEvent {
    public JobExecutionEvent(JobExecution execution);
    public JobExecution getJobExecution();
}

public class BatchDataSourceScriptDatabaseInitializer 
    extends DataSourceScriptDatabaseInitializer {
    
    public BatchDataSourceScriptDatabaseInitializer(
        DataSource dataSource, 
        BatchProperties.Jdbc properties);
    
    public BatchDataSourceScriptDatabaseInitializer(
        DataSource dataSource, 
        DatabaseInitializationSettings settings);
    
    public static DatabaseInitializationSettings getSettings(
        DataSource dataSource, 
        BatchProperties.Jdbc properties);
}

class JobRepositoryDependsOnDatabaseInitializationDetector 
    extends AbstractBeansOfTypeDependsOnDatabaseInitializationDetector {
    
    @Override
    protected Set<Class<?>> getDependsOnDatabaseInitializationBeanTypes();
}