【问题标题】:Reference Command Line Argument to in Spring Batch Step参考 Spring Batch Step 中的命令行参数
【发布时间】:2020-08-03 00:37:28
【问题描述】:

我已经设置了我的主类来接受参数(文件名),但似乎无法在不硬编码文件路径的情况下获得一个工作步骤。我使用@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())
    }

【问题讨论】:

    标签: java spring string arguments spring-batch


    【解决方案1】:

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

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

    有关详细信息,请参阅参考文档的Late Binding of Job and Step Attributes 部分。

    【讨论】:

      猜你喜欢
      • 2020-07-12
      • 2016-08-31
      • 2010-10-11
      • 2020-03-15
      • 1970-01-01
      • 2018-03-17
      • 2010-09-13
      • 1970-01-01
      • 2016-03-25
      相关资源
      最近更新 更多