gpt4 book ai didi

java - 在 Spring Batch 步骤中引用命令行参数

转载 作者:行者123 更新时间:2023-12-01 17:19:28 25 4
gpt4 key购买 nike

我已经将我的主类设置为接受参数(文件名),但如果不对文件路径进行硬编码,似乎无法完成工作。我使用 @Value 注释在另一个步骤中做了同样的事情,它工作得很好,但我似乎不能在这里使用它,但它不起作用。我想替换 IBMIA0 文件路径。

主类

    public void run(String... args) throws Exception {
if (args.length == 0) {
log.error("ERROR: No Arguments Passed");
throw new ADESystemException("ERROR: No Arguments Passed", null);
}
JobParameters jobParameters = new JobParametersBuilder().addLong("time",System.currentTimeMillis())
.addString("fileName", args[1]).toJobParameters();
if ("SYNC".equalsIgnoreCase(args[0])) {
jobLauncher.run(processSynceJob, jobParameters);
}
}

作业配置

    @Bean
public SyncsortRowValidationTask syncsortRowValidationTask (@Value("#{jobParameters[fileName]}") String fileName){
return new SyncsortRowValidationTask(fileName);
}

....

@Bean
public Step syncRowValidation() {
return almBatchConfig.stepBuilder.get("syncRowValidation").tasklet(syncsortRowValidationTask("C:\\input\\IBMIA0")).build();
}
@Bean
public Job processSyncJob() {
return BatchConfig.jobs.get("processSyncJob")
.start(syncRowValidation())
}

最佳答案

您需要将您的 syncsortRowValidationTask bean 步骤设置为作用域:

@Bean
@StepScoped
public SyncsortRowValidationTask syncsortRowValidationTask (@Value("#{jobParameters[fileName]}") String fileName){
return new SyncsortRowValidationTask(fileName);
}

请引用Late Binding of Job and Step Attributes引用文档部分了解更多详细信息。

关于java - 在 Spring Batch 步骤中引用命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61323655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com