spring 启动批处理,执行日期卡在错误的值

spring boot batch, execution date stuck with wrong value

我有一个 spring 批处理应用程序 spring 使用以下配置 class 启动:

   @Bean
public Job myaJob(JobBuilderFactory jobBuilderFactory,
                           Step extractAccounts,
                           Step transformAccounts,
                           Step writeOutputFile) {

    return jobBuilderFactory.get(JOB_NAME)
                            .incrementer(new RunIdIncrementer())
                            .flow(extractAccounts)
                            .next(transformAccounts)
                            .next(writeOutputFile)
                            .end()
                            .build();
}

主要class

@Log4j2
@SpringBootApplication
public class MyApplication implements CommandLineRunner {
@Autowired
JobLauncher jobLauncher;

@Autowired
Job myJob;

public static void main(String[] args) {

    SpringApplication.run(MyApplication .class, args);
}

@SneakyThrows
@Override
public void run(String... args) {

    JobParameters jobParameters = buildJobParameters();
    JobExecution jobExecution = jobLauncher.run(myJob, jobParameters);

}


protected JobParameters buildJobParameters() {

    return new JobParametersBuilder().addDate("executionDate", new Date())
                                     .toJobParameters();

}

问题是我每次 运行 应用程序都执行两次批处理,所有步骤都被调用两次,甚至作业被调用两次,但是当我删除 [=13] 的所有代码时=],batch如期正常执行一次,但是参数execution_date卡在去掉代码前最后一次使用的值。 关于如何解决这个问题有什么想法吗?

是的,只需使用

spring.batch.job.enabled=false

在 application.properties 或 application.yml 中,因此作业将执行一次。