如何拥有多个 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 提供的名称:processJob1processJob2.

我找到了另一种方法,

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())....;
    }
    ....
}