春季批次中我的自定义阅读器中出现空值

时间:2017-07-20 20:08:18

标签: spring-batch

我有一个Spring批处理过程,它从表中读取值并将其写入自定义编写器。 我正在使用spring scheduler来执行这项工作。下面是我对spring scheduler的配置。 但我在读者中得到空值。我没有在日志中看到任何错误,我的工作运行良好,但月份的值为空。 (但是在我的查询中使用我的param值,以便它适用于通用查询。)

我的日程安排员:

JobParameters param = new JobParametersBuilder()
                    .addLong("time", System.currentTimeMillis())
                    .addString("date", "07-12-2017") // will be from a variable
                    .addString("month", "june")      // will be from a variable
                    .toJobParameters();

JobExecution execution = jobLauncher.run(job, param);

我的读者:

@Bean
@StepScope
public ItemReader<Bill> reader(@Value("#{jobParameters[month]}") String month) throws Exception {

    System.out.println("*****************************");
    System.out.println("month ::::::: "+month);
    System.out.println("*****************************"); 

    // My awesome database query here, where I will be using month.

上个月即将出现。

我的批量配置:

 @Bean
public Job CreateBillJob(JobCompletionNotificationListener listener) throws Exception {

    return jobBuilderFactory.get("createBill")
            .incrementer(new RunIdIncrementer())
            .listener(listener)
            .flow(step1())
            .end()
            .build();
}

private static final String OVERRIDDEN_BY_EXPRESSION = null;

@Bean
public Step step1() throws Exception {
    return stepBuilderFactory.get("step1")
            .<Bill, Bill> chunk(500)
            .reader(billDataReader.reader(OVERRIDDEN_BY_EXPRESSION))
            .processor(processor())
            .writer(fileWriter)
            .build();
}

对此的任何帮助都非常感谢。谢谢大家。

1 个答案:

答案 0 :(得分:0)

我认为,在month@Value("#{jobParameters['month']}"而不是@Value("#{jobParameters[month]}"

周围缺少单引号