tony
tony

Reputation: 123

How to have multiple spring boot batch Configuration class

If I want to have several jobs in my batch project. Each file only contains a single job.

Job 1:

@Configuration
public class StartTest1 {

    @Autowired
    JobBuilderFactory jobBuilderFactory;

    @Autowired
    StepBuilderFactory stepBuilderFactory;

    @Bean
    public Job processJob() {
        return jobBuilderFactory.get("processJob1").incrementer(new RunIdIncrementer())....;
    }
    ....
}

Job 2:

@Configuration
public class StartTest2 {

    @Autowired
    JobBuilderFactory jobBuilderFactory;

    @Autowired
    StepBuilderFactory stepBuilderFactory;

    @Bean
    public Job processJob() {
        return jobBuilderFactory.get("processJob2").incrementer(new RunIdIncrementer())....;
    }
    ....
}

I tried to set @Configuration annotation for each class. But only one job executes at run time. How can I do to have multiple job files?

Upvotes: 0

Views: 4548

Answers (2)

tony
tony

Reputation: 123

I find another way,

set different bean name!

Job 1:

@Configuration
public class StartTest1 {

    @Autowired
    JobBuilderFactory jobBuilderFactory;

    @Autowired
    StepBuilderFactory stepBuilderFactory;

    @Bean("job1")
    public Job processJob() {
        return jobBuilderFactory.get("processJob1").incrementer(new RunIdIncrementer())....;
    }
    ....
}

Job 2:

@Configuration
public class StartTest2 {

    @Autowired
    JobBuilderFactory jobBuilderFactory;

    @Autowired
    StepBuilderFactory stepBuilderFactory;

    @Bean("job2")
    public Job processJob() {
        return jobBuilderFactory.get("processJob2").incrementer(new RunIdIncrementer())....;
    }
    ....
}

Upvotes: 0

Stefan Reisner
Stefan Reisner

Reputation: 705

I think that the problem is that both job beans have the same name processJob, so one overwrites the other when the application context gets built. The simplest solution would be to use unique bean names like the names you are giving the Jobs: processJob1, processJob2.

Upvotes: 2

Related Questions