我有一个带有spring batch的spring boot 2应用程序。
实际上,当应用程序启动时,批处理就开始了。
我想在创建或修改文件后开始自动启动,而不是自动启动。
要完全控制批处理开始我需要做什么?
@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) {
....
}
}
答案 0 :(得分:2)
您的问题的答案分为两个部分:
要禁用负责启动时启动作业的JobLauncherCommandLineRunner
,请设置spring.batch.jobs.enabled=false
(另请参见Spring Boot Batch - execluding JobLauncherCommandLineRunner)。
要从应用程序逻辑启动作业,请注入JobLauncher
bean并将其启动方法与合适的作业参数一起传递给您的作业bean。