如何使用 CompositeItemProcessor 在处理器中获取 stepExecutionContext?

How to get stepExecutionContext in Processor using CompositeItemProcessor?

在 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”bean java 文件中,我添加了以下代码以获取 StepExecution 对象。

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

但上面的代码没有执行。只有 process() 方法从“oldProcessor” bean 调用。

当我尝试不配置 CompositeItemProcessor 时,然后是这个“setStepExecution()”方法和 process() 方法正在执行 oldProcessor bean。 例如

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

请告诉我,如何使用 CompositeItemProcessor 在处理器中获取 stepExecutionContext

尝试在您的处理器中使用以下内容。

@Value("#{stepExecution}")

private StepExecution stepExecution;

如果范围是步骤,这应该有效。