Какова функция JobBuilderFactory.get (job) .incrementer (RunIdIncrementer)?

Я разрабатываю проект Spring-Batch с использованием Spring-Boot, и все идет хорошо. Я сделал несколько примеров весенних партий (включая некоторые из spring.io), но я не уверен, что некоторые вещи делают, и «это просто работает» меня не удовлетворяет.

Мой весенний ботинок реализует основной классCommandLineRunner и для этой конкретной работы начальная установка выглядела как

@Bean
public Job myJob(JobExecutionListenerSupport listener) {
    return myJobBuilderFactory.get(JOB)
            .listener(listener)
            .start(myStep())
            .build();
}

Что вызвало

java.lang.IllegalStateException: Failed to execute CommandLineRunner
    at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:809) ~[spring-boot-1.3.2.RELEASE.jar:1.3.2.RELEASE]
    at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:790) ~[spring-boot-1.3.2.RELEASE.jar:1.3.2.RELEASE]
    at org.springframework.boot.SpringApplication.afterRefresh(SpringApplication.java:777) [spring-boot-1.3.2.RELEASE.jar:1.3.2.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:308) [spring-boot-1.3.2.RELEASE.jar:1.3.2.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1191) [spring-boot-1.3.2.RELEASE.jar:1.3.2.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1180) [spring-boot-1.3.2.RELEASE.jar:1.3.2.RELEASE]
    at org.bjc.providermodel.maintenance.MaintenanceApplication.main(MaintenanceApplication.java:20) [classes/:?]
Caused by: org.springframework.batch.core.repository.JobExecutionAlreadyRunningException: A job execution for this job is already running: JobInstance: id=99, version=0, Job=[myJob]

Почему изменение вышеуказанного компонента на

@Bean
public Job myJob(JobExecutionListenerSupport listener) {
    return myJobBuilderFactory.get(JOB)
            .incrementer(new RunIdIncrementer())
            .listener(listener)
            .start(myStep())
            .build();
}

Чтобы все прошло гладко? Я попытался прочитать документ дляRunIdIncrementer а также почитать немногоВот, Из того, что я могу сказать, он нуждается в этом инкрементере, чтобы отслеживать определенный набор заданий, которые выполняются для выполнения «вещи», но не уверен, что это такое. Spring-Boot абстракция мешает мне знать, что здесь происходит

Ответы на вопрос(1)

Ваш ответ на вопрос