с конфигурацией Spring Batch на основе xml вы можете параметризовать интервал фиксации / размер блока, например:
<job id="basicSimpleJob"
xmlns="http://www.springframework.org/schema/batch">
<step id="basicSimpleStep" >
<tasklet>
<chunk
reader="reader"
processor="processor"
writer="writer"
commit-interval="#{jobParameters['commit.interval']}">
</chunk>
</tasklet>
</step>
</job>
с конфигурацией на основе javaconfig это может выглядеть как
@Bean
public Step step(
ItemStreamReader<Map<String, Object>> reader,
ItemWriter<Map<String, Object>> writer,
@Value("#{jobParameters['commit.interval']}") Integer commitInterval
) throws Exception {
return steps
.get("basicSimpleStep")
.<Map<String, Object>, Map<String, Object>>chunk(commitInterval)
.reader(reader)
.processor(new FilterItemProcessor())
.writer(writer)
.build();
}
но это не работает, я тоже получаю
Вызвано: org.springframework.expression.spel.SpelEvaluationException: EL1008E: (pos 0): свойство или поле 'jobParameters' не может быть найдено в объекте типа 'org.springframework.beans.factory.config.BeanExpressionContext' - возможно, не общедоступно ?
или - при использовании @StepScope для шагового bean-компонента -
Вызвано: java.lang.IllegalStateException: для области действия шага нет доступного держателя контекста
Я знаю, что у меня есть рабочая область действия, работают другие компоненты с этапами (определены внутри того же класса, что и этап)
прямо сейчас я использую CompletionPolicy, который работает с stepScope, но я хотел бы знать, заставил ли кто-то его работать «нормальным» способом или пришло время для тикета JIRA
... который создается по адресу https://jira.spring.io/browse/BATCH-2263 < / а>