In the following Spring Batch sample I need to inject execution context into itemReaderStatement so that I can put an item there in order to use it in Step2.
@Bean
public Job sampleJob() {
return new JobBuilder("sampleJob")
.repository(jobRepository)
.start(new StepBuilder("Step1")
.repository(jobRepository)
.transactionManager(transactionManager)
.chunk(1)
.reader(itemReaderStatement())
.writer(itemWriterStatement(null))
.build())
.next(new StepBuilder("Step2")
.repository(jobRepository)
.transactionManager(transactionManager)
.chunk(1)
.reader(itemReader())
.writer(itemWriter())
.build())
.build();
}
@Bean
@JobScope
public ItemWriter itemWriterStatement(@Value("#{jobExecutionContext}") ExecutionContext context) {
return items -> items.forEach(item ->
{
context.put("item", item);
});
}
I am getting:
EL1008E: Property or field 'jobExecutionContext' cannot be found on object of type 'org.springframework.beans.factory.config.BeanExpressionContext'