Yogesh Ukale
Yogesh Ukale

Reputation: 153

How to get stepExecutionContext in Processor using CompositeItemProcessor?

In XML file i have configured two Processor using 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>

and in "oldProcessor" bean java file i have added below code to get StepExecution object.

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

but above code not executing. only process() method calling from "oldProcessor" bean.

and when i tried without configuring CompositeItemProcessor,then this "setStepExecution()" method and process() method are executing of oldProcessor bean. eg.

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

Please advise me, how to get stepExecutionContext in Processor using CompositeItemProcessor

Upvotes: 1

Views: 1185

Answers (1)

Binu
Binu

Reputation: 784

Try with the following in your processor.

@Value("#{stepExecution}")

private StepExecution stepExecution;

This should work if the scope is step.

Upvotes: 1

Related Questions