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
值。
我正在使用 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
值。