Как получить stepExecutionContext в процессоре, используя CompositeItemProcessor? - PullRequest
1 голос
/ 06 января 2020

В XML файле я настроил два процессора, используя CompositeItemProcessor

    <processor>
          <beans:bean id="CompositeItemProcessor" class="org.springframework.batch.item.support.CompositeItemProcessor" scope="step">
            <beans:property name="delegates">
              <beans:list>
                <beans:ref bean="oldProcessor"/>
                <beans:ref bean="newProcessor"/>
              </beans:list>
            </beans:property>
          </beans:bean>
        </processor>

и в файле " oldProcessor " java, который я добавил ниже код для получения StepExecution object.

      @BeforeStep
      @Order(1)
      public void setStepExecution(StepExecution stepExecution) {
        this.stepExecution = stepExecution;
      }

, но приведенный выше код не выполняется. только process () вызов метода из компонента " oldProcessor ".

, и когда я попытался без настройки CompositeItemProcessor , то это " Метод setStepExecution ()"и метод process () выполняют компонент bean oldProcessor. например.

<processor>
    <beans:ref bean="oldProcessor"/>
</processor>

Посоветуйте, пожалуйста, как получить stepExecutionContext в процессоре с помощью CompositeItemProcessor

1 Ответ

1 голос
/ 07 января 2020

Попробуйте использовать следующее в вашем процессоре.

@Value("#{stepExecution}")

private StepExecution stepExecution;

Это должно работать, если область действия - шаг.

...