#spring-batch
#spring-batch
Вопрос:
Это моя конфигурация step:
@Bean
Step processEnrollment(@Lazy Job enrollmentProcessor) {
return this.steps.get("processEnrollment")
.job(enrollmentProcessor)
.launcher(this.jobLauncher)
.parametersExtractor(DEFAULT_PARAM_EXTRACTOR)
.listener(/*StepExecutionListener*/)
.build();
}
Моя проблема в том, что .listener()
принимает только прослушиватели выполнения шага. Есть ли какой-либо способ зарегистрировать прослушиватели writer, например? Я не хочу связывать «внутреннее» задание с этим прослушивателем.
Комментарии:
1. Где ваш автор в приведенном выше коде? Является ли этот writer частью
Job enrollmentProcessor
?2. Программа записи является частью enrollmentProcessor, и я хочу прослушать ее снаружи, но StepBuilderHelper.listener() принимает только прослушиватели выполнения шага.
Ответ №1:
Если вы переносите полное задание в шаг, вы не сможете зарегистрировать фрагмент, прослушиватель чтения или записи.
Шаг просто завершает задание и понятия не имеет, что происходит внутри задания. Он просто знает, когда оно начинается и когда заканчивается; прослушиватели не распространяются на дочерние элементы. По этой же причине вы не можете зарегистрировать прослушиватель фрагмента, чтения или записи в задании.
Если вы хотите зарегистрировать прослушиватель записи, вы должны сделать это на соответствующем шаге (ах) вашего задания enrollmentProcessor.