3

我仍在研究 Spring Batch,遇到了一个需要将 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 上工作。任何帮助将不胜感激。

4

2 回答 2

2

您需要在 bean 定义中使用 scope="step"。

<bean id="myBean" class=".....MyBean" scope="step">
    <property name="path" value="file:#{jobParameters['PATH']}/fileName"/>
</bean>

您的 #{jobParameters['PATH'} 也缺少右括号]

于 2013-04-03T11:48:14.883 回答
0

继 Serkan Bey 的回应后,请确保您要么声明

<bean class="org.springframework.batch.core.scope.StepScope" />

或使用<batch:*/>命名空间来确保拾取步骤范围。

于 2013-04-04T11:08:21.683 回答