Spring批处理-如何使用JavaConfig全局设置RunDidCrementer
我正在使用SpringBatch和JavaConfig(无XML)开发一个项目。 我正在使用自动连线创建作业 是否可以全局设置工厂的递增器 返回jobBuilderFactory.get(“jobName”).incrementer(newrunidIncrementer()).start(stepOne()).next(lastStep()).build()Spring批处理-如何使用JavaConfig全局设置RunDidCrementer,spring,spring-batch,jobs,spring-java-config,Spring,Spring Batch,Jobs,Spring Java Config,我正在使用SpringBatch和JavaConfig(无XML)开发一个项目。 我正在使用自动连线创建作业 是否可以全局设置工厂的递增器 返回jobBuilderFactory.get(“jobName”).incrementer(newrunidIncrementer()).start(stepOne()).next(lastStep()).build() 很抱歉,如果这是一个转储问题,但我是Spring Batch新手,没有找到有效的解决方案。对于XML配置,您会使用,但您说您不使用XML
很抱歉,如果这是一个转储问题,但我是Spring Batch新手,没有找到有效的解决方案。对于XML配置,您会使用,但您说您不使用XML 由于Java配置没有与XML bean定义继承等价的继承(请参阅此处的详细信息:),因此您可以在配置中全局创建
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
值。您所说的“为工厂全局设置递增器”是什么意思?递增器与特定作业相关,它在运行作业的下一个实例时递增作业参数。因此,每个作业都有自己的递增器。您说您没有找到有效的解决方案,您希望实现什么?当我查看spring批处理示例时,作业定义如下:return jobs.get(“myJob”).start(step1).next(step2).build()代码>并且似乎没有增量设置(如果我错了,很抱歉)。我们将只在整个批处理项目中使用基本的“RunIdIncrementer”,这就是为什么我想为所有作业全局设置它。我们通过Cron+Rest(使用虚拟参数)触发作业,谢谢!似乎每个作业的一个新RundIncrementer实例都是一个“更干净”的解决方案,尤其是对于连续的值。RunIdIncrementer
与特定作业相关。