1

XMLファイルで、 CompositeItemProcessorを使用して2つのプロセッサを構成しました

    <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;
      }

しかし、上記のコードは実行されていません。" oldProcessor " Beanから呼び出すprocess()メソッドのみ。

CompositeItemProcessorを構成せずに試してみたところ 、この「setStepExecution()」メソッドとprocess()メソッドが oldProcessor Bean を実行しています。例えば。

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

CompositeItemProcessor を使用してプロセッサで stepExecutionContext を取得する方法を教えてください。

4

1 に答える 1

1

プロセッサで次のことを試してください。

@Value("#{stepExecution}")

private StepExecution stepExecution;

スコープがステップの場合、これは機能するはずです。

于 2020-01-07T07:55:11.753 に答える