如何拥有多个spring启动批处理配置类



如果我想在我的批处理项目中有几个作业。每个文件只包含一个作业。

作业1:

@Configuration
public class StartTest1 {
@Autowired
JobBuilderFactory jobBuilderFactory;
@Autowired
StepBuilderFactory stepBuilderFactory;
@Bean
public Job processJob() {
return jobBuilderFactory.get("processJob1").incrementer(new RunIdIncrementer())....;
}
....
}

作业2:

@Configuration
public class StartTest2 {
@Autowired
JobBuilderFactory jobBuilderFactory;
@Autowired
StepBuilderFactory stepBuilderFactory;
@Bean
public Job processJob() {
return jobBuilderFactory.get("processJob2").incrementer(new RunIdIncrementer())....;
}
....
}

我试着为每个类设置@Configuration注释。但在运行时只有一个作业执行。如何拥有多个作业文件?

我认为问题在于两个作业bean具有相同的名称processJob,因此在构建应用程序上下文时,其中一个会覆盖另一个。最简单的解决方案是使用唯一的bean名称,如您为Job提供的名称:processJob1processJob2

我找到了另一种方法,

设置不同的bean名称!

作业1:

@Configuration
public class StartTest1 {
@Autowired
JobBuilderFactory jobBuilderFactory;
@Autowired
StepBuilderFactory stepBuilderFactory;
@Bean("job1")
public Job processJob() {
return jobBuilderFactory.get("processJob1").incrementer(new RunIdIncrementer())....;
}
....
}

作业2:

@Configuration
public class StartTest2 {
@Autowired
JobBuilderFactory jobBuilderFactory;
@Autowired
StepBuilderFactory stepBuilderFactory;
@Bean("job2")
public Job processJob() {
return jobBuilderFactory.get("processJob2").incrementer(new RunIdIncrementer())....;
}
....
}

最新更新