在 Spring 批处理步骤中引用命令行参数
Reference Command Line Argument to in Spring Batch Step
我已经设置了我的 main class 来接受参数(文件名),但似乎无法在不对文件路径进行硬编码的情况下进行工作。我使用 @Value 注释对另一个步骤做了同样的事情,它工作正常,但我似乎不能在这里使用它,但它不起作用。我想替换 IBMIA0
文件路径。
主要Class
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 部分。
我已经设置了我的 main class 来接受参数(文件名),但似乎无法在不对文件路径进行硬编码的情况下进行工作。我使用 @Value 注释对另一个步骤做了同样的事情,它工作正常,但我似乎不能在这里使用它,但它不起作用。我想替换 IBMIA0
文件路径。
主要Class
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 部分。