I have two Spring Batch jobs inside one Spring Boot application.
I am trying to use org.springframework.batch.core.configuration.support.ApplicationContextFactory to have separate ApplicationContext to avoid bean name collison. I found spring-batch-with-modular-true-doesnt-work-for-multiple-jobs but I am unable to make it work. The jobs are not launching.
@Configuration
@EnableBatchProcessing(modular=true)
public class ModularJobConfig {
@Bean
public ApplicationContextFactory one() {
return new GenericApplicationContextFactory(JobConfig1.class);
}
@Bean
public ApplicationContextFactory two() {
return new GenericApplicationContextFactory(JobConfig2.class);
}
}
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface IgnoreDuringScan {
}
@Configuration
@IgnoreDuringScan
public class JobConfig1 { ... }
@Configuration
@IgnoreDuringScan
public class JobConfig2 { ... }
@SpringBootApplication
@ComponentScan(excludeFilters = @Filter(IgnoreDuringScan.class))
public class MainApplication { ...}