У меня есть отрывок, как указано ниже для пошаговой обработки.
@Bean
@JobScope
public Step readStep(StepBuilderFactory sbf,
ItemReader reader,ItemWriter writer, TaskExecutor taskExecutor,
RefFileReaderComponentFactory componentFactory, String file){
final Step step = sbf.get(file)
.chunk(100)
.reader(reader)
.faultTolerant()
.skipPolicy(new SkipPolicy()) //dummy skip policy for representation purpose
.writer(writer)
.faultTolerant()
.skipPolicy(new SkipPolicy())
.listener(new NewStepExecutionListener()) //This dummy listener is implementation of the StepExecutionListener
//.listener(new NewItemWrtieListener) //This dummy listener is implementation of the ItemWriteListener
.taskExecutor(taskExecutor)
.build();
return step;
}
Но вышеприведенный код выдает ошибку времени компиляции - The method taskExecutor(TaskExecutor) is undefined for the type StepBuilderHelper
.
Интересно, что эта ошибка отображается только в том случае, еслиЯ помещаю NewStepExecutionListener
слушатель, но если я закомментирую его и раскомментирую NewItemWrtieListener
, тогда он будет работать нормально.
После типизации, код выглядит так:
@Bean
@JobScope
public Step readStep(StepBuilderFactory sbf,
ItemReader reader,ItemWriter writer, TaskExecutor taskExecutor,
RefFileReaderComponentFactory componentFactory, String file){
final Step step = ((AbstractTaskletStepBuilder<SimpleStepBuilder<Object, Object>>) sbf.get(file)
.chunk(100)
.reader(reader)
.faultTolerant()
.skipPolicy(new SkipPolicy()) //dummy skip policy for representation purpose
.writer(writer)
.faultTolerant()
.skipPolicy(new SkipPolicy())
.listener(new NewStepExecutionListener())) //This dummy listener is implementation of the StepExecutionListener
//.listener(new NewItemWrtieListener) //This dummy listener is implementation of the ItemWriteListener
.taskExecutor(taskExecutor)
.build();
return step;
}
Я попытался найти причинуэто, но не может понять, почему изменение типа слушателя потребовало бы приведения типов для пошаговой обработки.
Может кто-нибудь объяснить, почему?