我必须在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;
}
如果您有更好的方法,请告诉我。