Я настроил свой основной класс на прием аргументов (fileName), но, похоже, не могу сделать шаг без жесткого кодирования пути к файлу. Я сделал то же самое с другим шагом, используя аннотацию @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())
}