spring启动批处理,执行日期使用错误的值
我有一个带有spring boot的spring批处理应用程序,具有以下配置类:spring启动批处理,执行日期使用错误的值,spring,spring-boot,spring-batch,Spring,Spring Boot,Spring Batch,我有一个带有spring boot的spring批处理应用程序,具有以下配置类: @Bean public Job myaJob(JobBuilderFactory jobBuilderFactory, Step extractAccounts, Step transformAccounts, Step writeOutputFi
@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();
}
主类
@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();
}
问题是每次运行应用程序时,批处理都会执行两次,所有步骤都会调用两次,甚至作业也会调用两次,但当我删除public void run(String…args)
的所有代码时,批处理会按预期正常执行一次,但是参数execution_date与删除代码之前使用的最后一个值保持一致。
关于如何解决这个问题有什么想法吗?是的,只要使用
spring.batch.job.enabled=false
在application.properties或application.yml中,因此作业将执行一次。是的,只需使用
spring.batch.job.enabled=false
在application.properties或application.yml中,因此作业将执行一次