我还在研究spring批处理,遇到了一个需要将jobParameter传递给自定义bean的场景。 job参数包含文件的路径。
以下是我的上下文的样子:
<bean id="myBean" class=".....MyBean">
<property name="path" value="file:#{jobParameters['PATH'}/fileName"/>
</bean>
这已包含在此处未包含的阅读器的步骤范围内。
问题是。实例化类时,传递给bean的值是 “file:#{jobParameters ['PATH'} / fileName”而不是调用作业时传递的jobParameter的值。它让我感到困惑,因为我在multiResourceReader上尝试设置资源值,它工作正常。我只是不能让它在自定义bean上工作。任何帮助都会非常感激。
答案 0 :(得分:2)
bean定义中需要scope =“step”。
<bean id="myBean" class=".....MyBean" scope="step">
<property name="path" value="file:#{jobParameters['PATH']}/fileName"/>
</bean>
此外,您的#{jobParameters ['PATH'}错过了结束括号]
答案 1 :(得分:0)
根据Serkan Bey的回复,请确保您声明
<bean class="org.springframework.batch.core.scope.StepScope" />
或使用<batch:*/>
命名空间来确保选择步骤范围。