Java Spring引导批处理:如何使用作业参数运行作业
我不得不在spring批处理上设置jobparemeters,但在spring boot批处理中,没有办法轻松做到这一点Java Spring引导批处理:如何使用作业参数运行作业,java,spring,spring-boot,spring-batch,Java,Spring,Spring Boot,Spring Batch,我不得不在spring批处理上设置jobparemeters,但在spring boot批处理中,没有办法轻松做到这一点 我需要重新运行作业,但如果参数相同,SpringBatch将不会再次运行作业。所以我决定添加一个时间戳作为参数。我找到了一种方法,并将我的解决方案放在stackoverflow上,供可能感兴趣的人使用 首先,需要在应用程序上添加此属性。属性/application.yml: spring.batch.job.enabled: false 使用该属性,spring boot不
我需要重新运行作业,但如果参数相同,SpringBatch将不会再次运行作业。所以我决定添加一个时间戳作为参数。我找到了一种方法,并将我的解决方案放在stackoverflow上,供可能感兴趣的人使用 首先,需要在应用程序上添加此属性。属性/application.yml:
spring.batch.job.enabled: false
使用该属性,spring boot不会自动运行作业
接下来,在配置文件上,您必须添加一个bean,该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;
}
如果您有更好的方法,请告诉我。例如,java-jar myjob.jar param1=value1 param2=value2 time=$(date)怎么样?有了这个,你不需要上面的代码。在我的情况下,我认为它是有效的。但实现取决于我的操作系统。我会试试的。当然
$(日期)
是用于unix/linux的,但你已经想到了。您可以对操作系统的类似命令执行相同操作,将时间戳作为参数添加到命令中,而无需编写上述代码。您可以在启动时添加时间戳。请看我对你答案的评论。