Как получить доступ к параметрам задания в Spring Batch Listener? - PullRequest
0 голосов
/ 27 марта 2020

Я работаю с ItemListenerSupport, чтобы выполнить некоторую обработку ошибок для ItemReadListener, ItemProcessListener и ItemWriteListener. Я хочу получить доступ к параметрам задания в этом случае. Как мне их получить? Я пытался @BeforeStep ввести StepExecution и Jobexecution, но ни один из них не сработал.

Ответы [ 2 ]

1 голос
/ 27 марта 2020

Чтобы получить дескриптор параметров задания, вы можете реализовать StepExecutionListener для вашего класса слушателя, чтобы использовать переопределенные методы beforeStep и afterStep

@Override
public void beforeStep(StepExecution stepExecution) {
    String name = (String) stepExecution.getJobExecution().getExecutionContext()
            .get("name");

}

@Override
public ExitStatus afterStep(StepExecution stepExecution) {
    if (stepExecution.getStatus() == BatchStatus.COMPLETED) {
        return ExitStatus.COMPLETED;
    }
    return ExitStatus.FAILED;
}
0 голосов
/ 30 марта 2020

Вы можете объявить своего слушателя как bean-компонент с пошаговой областью и ввести в него параметры задания, например:

@Bean
@StepScope
public ItemReadListener itemReadListener(final @Value("#{jobParameters['name']}") String name) {
    return new ItemListenerSupport() {
        @Override
        public void afterRead(Object item) {
            System.out.println("in listener, job param name=" + name);
            super.afterRead(item);
        }
    };
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...