我必须在spring batch上设置jobparemeters,但是使用spring boot batch时,无法轻松做到这一点。

我需要重新运行作业,但是如果参数相同,spring-batch将不会再次运行作业。因此,我决定添加一个时间戳作为参数。

最佳答案

我找到了一种方法,将解决方案放在有可能感兴趣的人的stackoverflow上。

首先,您需要将此属性添加到application.properties / application.yml中:

spring.batch.job.enabled: false


有了该属性,spring boot不会自动运行作业。

接下来,在配置文件上,您必须添加一个可以运行您的作业并可以在其中放置jobparameters的bean:

@Bean
@Autowired
public JobExecution run(Job job, JobLauncher jobLauncher) {
    JobExecution jobExecution = null;
    try {
        JobParameters jobParameters = new JobParametersBuilder()
                .addLong("time", System.currentTimeMillis()).toJobParameters();

        jobExecution = jobLauncher.run(job, jobParameters);
        logger.info("Exit Status : " + jobExecution.getStatus());
    } catch (Exception e) {
        e.printStackTrace();
    }
    return jobExecution;
}


如果您有更好的方法,请告诉我。

08-16 18:32