You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Batch 5.X升级:配置适配疑问与工厂类替换咨询

问题解决方案

1. 替换移除的DefaultBatchConfigurer自定义JobRepository

Spring Batch 5移除了DefaultBatchConfigurer,自定义JobRepository可以通过直接声明JobRepository类型的Bean实现,示例代码如下:

@Configuration
@EnableBatchProcessing
public class DefaultBatchConfig {

    @Bean
    public JobRepository jobRepository(DataSource dataSource, PlatformTransactionManager transactionManager) throws Exception {
        JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean();
        factory.setDataSource(dataSource);
        factory.setTransactionManager(transactionManager);
        factory.setDatabaseType(DatabaseType.MYSQL.name()); // 根据你的数据库类型调整
        factory.setTablePrefix("BATCH_"); // 可选,自定义表前缀
        return factory.getObject();
    }
}

如果需要更精细的配置(比如自定义序列化、隔离级别等),直接在JobRepositoryFactoryBean上调用对应的setter方法即可。

2. 替换废弃的JobBuilderFactory和StepBuilderFactory

Spring Batch 5中这两个工厂类已被废弃,直接使用JobBuilder和StepBuilder构建作业和步骤即可,无需依赖工厂类。

原有废弃写法示例

@Autowired
private JobBuilderFactory jobBuilderFactory;
@Autowired
private StepBuilderFactory stepBuilderFactory;

@Bean
public Job activateTestJob() {
    return jobBuilderFactory.get("activateTestJob")
            .start(activateTestStep())
            .build();
}

@Bean
public Step activateTestStep() {
    return stepBuilderFactory.get("activateTestStep")
            .<Input, Output>chunk(10)
            .reader(reader())
            .processor(processor())
            .writer(writer())
            .build();
}

升级后的写法示例

@Autowired
private JobRepository jobRepository;
@Autowired
private PlatformTransactionManager transactionManager;

@Bean
public Job activateTestJob() {
    return new JobBuilder("activateTestJob", jobRepository)
            .start(activateTestStep())
            .build();
}

@Bean
public Step activateTestStep() {
    return new StepBuilder("activateTestStep", jobRepository)
            .<Input, Output>chunk(10, transactionManager)
            .reader(reader())
            .processor(processor())
            .writer(writer())
            .build();
}

核心变化:

  • 直接实例化JobBuilder,传入作业名称和JobRepository
  • 实例化StepBuilder时,传入步骤名称、JobRepository,构建chunk时传入PlatformTransactionManager

原工厂类支持的监听、重试、跳过等配置项,都可以在新的构建器上找到对应方法实现。

内容的提问来源于stack exchange,提问作者Bhagyashree Kalshetti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 20:45:16