У меня была полная ошибка. Очень пространственный случай: если вы подключите крюк неназванной функции (замыкания) к точке крюка объекта объекта. После этого вы попытаетесь сериализовать этот объект.
Способ, которым я подхожу к этому, заключается в следующем:
StepExecutionListener
, который оценивает, есть ли в списке больше элементов для обработки. Если это так, он возвращает ExitStatus
, который отображает один и тот же шаг. Если нет, он возвращает ExitStatus
, который отображает для завершения задания или продолжения задания (в зависимости от остальной части потока). Например:
StepExecutionListener
public class MyListener {
@Autowired
private List myItems;
@AfterStep
public ExitStatus afterStep(StepExecution stepExecution) {
if(myItems.size() > 0) {
return new ExitStatus("CONTINUE");
}
else {
return new ExitStatus("FINISHED");
}
}
}
Конфигурация заданий
...
@Bean
public Step step1() {...}
@Bean
public MyListener listener() {..}
@Bean
public Step step2(MyListener listener) {
return stepBuilder.get("step2")
.tasklet(myTasklet()) // Replace this piece as needed
.listener(listener).build();
}
@Bean
public Job job1(Step step1, Step step2) {
return jobBuilder.get("job1")
.start(step1)
.next(step2).on("CONTINUE").to(step2).on("FINISHED").end()
.build();
}
...
Примечание. Я не тестировал этот код, чтобы могли быть опечатки и т. Д.
step1
, могу ли я назвать это.next(step2).on("CONTINUE").to(step1).on("FINISHED").end()
? – irvana 16 March 2016 в 08:50