Ссылка Аргумент командной строки в шаге Spring Batch - PullRequest
0 голосов
/ 20 апреля 2020

Я настроил свой основной класс на прием аргументов (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())
    }

1 Ответ

0 голосов
/ 20 апреля 2020

Вам необходимо задать область действия шага syncsortRowValidationTask:

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

Более подробную информацию см. В разделе Позднее связывание атрибутов задания и шага справочной документации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...