如何决定批次何时开始

how to decide when batch it's starting

我有一个 spring boot 2 应用程序 spring 批处理。

实际上当应用程序启动时,批处理就开始了。

我不想自动启动它,而是想在创建或修改文件后启动。

我需要做什么才能完全控制批次的开始?

@EnableBatchProcessing
@Configuration
public class CsvFileToDatabaseConfig {

    @Autowired
    public JobBuilderFactory jobBuilderFactory;

    @Autowired
    public StepBuilderFactory stepBuilderFactory;

    @Bean
    public FlatFileItemReader<Billings> billingeReader() {
        ....
    }

    @Bean
    ItemProcessor<Billings, Billings> billingProcessor() {
        ...
    }

    @Bean
    public JdbcBatchItemWriter<Billings> billingWriter() {
        ...
    }

    @Bean
    public Step csvFileToDatabaseStep() {
        ...
    }

    @Bean
    Job csvFileToDatabaseJob(JobCompletionNotificationListener listener) {
        ....
    }

}

您问题的答案分为两部分: 要禁用负责在启动时启动作业的 JobLauncherCommandLineRunner,请设置 spring.batch.jobs.enabled=false(另请参阅 )。 要从您的应用程序逻辑启动作业,请注入 JobLauncher bean 并将其启动方法与适当的作业参数一起传递给您的作业 bean。