在Spring批处理中访问ItemProcessor中的作业参数

时间:2013-04-04 20:37:17

标签: spring-batch

我是初次批处理的新手,在开发过程中,我遇到了一个需要在ItemProcessor上访问jobParameter的场景。我在读者(MultiresourceReader和StaxeventItemReader以及我已经构建的CustomReader)上完成了这个并且它成功了,我可以检索jobParameter而不是使用ItemProcessor。

这是我的代码段。

<bean id="myProcessor" class="com.......MyCustomProcessor" scope="step">
    <property name="myBean" ref="customBean"/>
</bean>
<bean id="customBean" class="...................MyCustomBean" scope="step">
    <property name="file" value="#{jobParameters['FILE']}/fileName.txt"/>
</bean>

它产生了一个lazyBinding Exception。有关如何在项目处理器上检索jobParameter的任何想法吗?

1 个答案:

答案 0 :(得分:3)

从我在您的代码段中看到的内容,您尝试从customBean访问job参数...而不是 ItemProcessor !。

Spring中的常规bean无法理解步骤 -scope。 Spring bean的范围是单例,原型,请求或会话!

如果你移动

<property name="file" value="#{jobParameters['FILE']}/fileName.txt"/>

ItemProcessor 它应该可以工作。

我假设您在处理器内部使用customBean?如果是这样,那么您将能够在 ItemProcessor 中设置jobParameter的值。