Spring Batch - Как установить RunIdIncrementer глобально, используя JavaConfig - PullRequest
0 голосов
/ 13 сентября 2018

я занимаюсь разработкой проекта с использованием Spring Batch и JavaConfig (без XML). Я создаю задания, используя Autowired jobBuilderFactory .

Возможно ли как-нибудь установить глобальный прирост для фабрики?

return jobBuilderFactory.get ("jobName"). Incrementer ( new RunIdIncrementer ()). Start (stepOne ()). Next (lastStep ()). Build ();

извините, если это вопрос дампа, но я новичок в Spring Batch и не нашел работающего решения.

1 Ответ

0 голосов
/ 17 сентября 2018

При настройке XML вы бы использовали наследование определения бина , но вы сказали, что не используете XML.

Поскольку не существует эквивалента наследования определений bean-компонентов XML с помощью конфигурации Java (см. Подробности здесь: https://stackoverflow.com/a/23266686/5019386),, вы можете создать RunIdIncrementer глобально в вашей конфигурации и использовать его в определениях заданий:

public JobParametersIncrementer jobParametersIncrementer() {
    return new RunIdIncrementer();
}

public JobBuilder getJobBuilder(String jobName) {
    return jobBuilderFactory.get(jobName)
            .incrementer(jobParametersIncrementer());
}

@Bean
public Job job1() {
    return getJobBuilder("job1")
            .start(step())
            .build();
}

@Bean
public Job job2() {
    return getJobBuilder("job2")
            .start(step())
            .build();
}

Но, опять же, как сказано в комментариях, вы получите run.id значения, которые не являются последовательными для каждой работы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...