我正在使用Spring Batch和JavaConfig(没有XML)开发项目。我正在使用Autowired jobBuilderFactory创建Jobs。
是否有可能在全球范围内为工厂设置增量器?
return jobBuilderFactory.get(“jobName”)。incrementer(new RunIdIncrementer())。start(stepOne())。next(lastStep())。build();
对不起,如果这是一个转储问题,但我是Spring Batch的新手并没有找到可行的解决方案。
使用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
值,这些值对于每个作业都不是连续的。