Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring引导批处理:如何使用作业参数运行作业_Java_Spring_Spring Boot_Spring Batch - Fatal编程技术网

Java Spring引导批处理:如何使用作业参数运行作业

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不

我不得不在spring批处理上设置jobparemeters,但在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的,但你已经想到了。您可以对操作系统的类似命令执行相同操作,将时间戳作为参数添加到命令中,而无需编写上述代码。您可以在启动时添加时间戳。请看我对你答案的评论。