如何使用 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;
如果范围是步骤,这应该有效。
在 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;
如果范围是步骤,这应该有效。