Spring 批处理 - 如何使用 JavaConfig 全局设置 RunIdIncrementer

Spring Batch - How to set RunIdIncrementer globally using JavaConfig

我正在使用 Spring Batch 和 JavaConfig(没有 XML)开发一个项目。 我正在使用 Autowired jobBuilderFactory.

创建作业

是否有可能在全局范围内为工厂设置增量器?

return jobBuilderFactory.get("jobName").incrementer(new RunIdIncrementer()).start(stepOne()).next( lastStep()).build();

抱歉,如果这是一个转储问题,但我是 Spring Batch 的新手,没有找到有效的解决方案。

使用 XML 配置你会使用 bean definition inheritance,但你说你不使用 XML。

因为没有等效的 XML bean 定义继承与 Java 配置(参见此处的详细信息:),您可以在全局创建 RunIdIncrementer配置并在作业定义中使用它:

public JobParametersIncrementer jobParametersIncrementer() {
    return new RunIdIncrementer();
}

public JobBuilder getJobBuilder(String jobName) {
    return jobBuilderFactory.get(jobName)
            .incrementer(jobParametersIncrementer());
}

@Bean
public Job job1() {
    return getJobBuilder("job1")
            .start(step())
            .build();
}

@Bean
public Job job2() {
    return getJobBuilder("job2")
            .start(step())
            .build();
}

但是正如评论中所说,您最终会得到每个作业不连续的 run.id 值。