Spring Batch:如何将 jobParameters 传递给自定义 bean?

Posted

技术标签:

【中文标题】Spring Batch:如何将 jobParameters 传递给自定义 bean?【英文标题】:Spring Batch: how to pass jobParameters to a custom bean? 【发布时间】:2013-03-24 23:30:26 【问题描述】:

我仍在研究 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 上工作。任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

【参考方案2】:

除了 Serkan Bey 的回应,请确保您声明

&lt;bean class="org.springframework.batch.core.scope.StepScope" /&gt;

或使用&lt;batch:*/&gt; 命名空间来确保拾取步骤范围。

【讨论】:

以上是关于Spring Batch:如何将 jobParameters 传递给自定义 bean?的主要内容,如果未能解决你的问题,请参考以下文章

Spring Batch:如何将 jobParameters 传递给自定义 bean?

Spring Batch - 如何将字符串从文件转换为日期?

如何将文件名输入到 Spring Batch 的 Item Reader 或 Item Processor 中?

如何在 Spring Batch 中使用 Spring 事务支持

如何在 Spring Batch 中分别读取平面文件头和正文

Spring Boot + Spring Batch + Spring JPA