如果我想在我的批处理项目中有几个作业。每个文件只包含一个作业。
作业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
提供的名称:processJob1
、processJob2
。
我找到了另一种方法,
设置不同的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())....;
}
....
}