我有一个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();
}
对此的任何帮助都非常感谢。谢谢大家。
答案 0 :(得分:0)
我认为,在month
,@Value("#{jobParameters['month']}"
而不是@Value("#{jobParameters[month]}"