如何拥有多个 spring 启动批处理配置 class
How to have multiple spring boot batch Configuration class
如果我想在我的批处理项目中有多个作业。每个文件只包含一个作业。
作业 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())....;
}
....
}
我尝试为每个 class 设置 @Configuration 注释。但是只有一项工作在 运行 时间执行。如何拥有多个作业文件?
我认为问题在于两个作业 bean 具有相同的名称 processJob
,因此在构建应用程序上下文时一个会覆盖另一个。最简单的解决方案是使用唯一的 bean 名称,例如您为 Job
提供的名称:processJob1
、processJob2
.
我找到了另一种方法,
set different bean name!
工作 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())....;
}
....
}
如果我想在我的批处理项目中有多个作业。每个文件只包含一个作业。
作业 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())....;
}
....
}
我尝试为每个 class 设置 @Configuration 注释。但是只有一项工作在 运行 时间执行。如何拥有多个作业文件?
我认为问题在于两个作业 bean 具有相同的名称 processJob
,因此在构建应用程序上下文时一个会覆盖另一个。最简单的解决方案是使用唯一的 bean 名称,例如您为 Job
提供的名称:processJob1
、processJob2
.
我找到了另一种方法,
set different bean name!
工作 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())....;
}
....
}