Spring Batch - 如何使用JavaConfig全局设置RunIdIncrementer

问题描述 投票:0回答:1

我正在使用Spring Batch和JavaConfig(没有XML)开发项目。我正在使用Autowired jobBuilderFactory创建Jobs。

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

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

对不起,如果这是一个转储问题,但我是Spring Batch的新手并没有找到可行的解决方案。

spring spring-batch jobs spring-java-config
1个回答
1
投票

使用XML配置,您将使用bean definition inheritance,但您说您不使用XML。

由于Java配置没有等效的XML bean定义继承(请参见详细信息:https://stackoverflow.com/a/23266686/5019386),您可以在配置中全局创建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值,这些值对于每个作业都不是连续的。

© www.soinside.com 2019 - 2024. All rights reserved.