如何为spring批处理中的作业设置一些配置参数,以便步骤和子作业可以使用它们?

时间:2014-05-08 12:10:27

标签: java spring spring-batch spring-batch-admin

如何为作业设置一些配置参数,例如输入文件路径。我的用例是,我有一些工作处理输入文件中的数据,这些工作是作为其他工作的一部分触发的,例如

<job id="jobA">     
    <step id="stepA" >
        <job ref="jobC"/>
    </step>     
</job>


<job id="jobB">     
    <step id="stepB" >
        <job ref="jobC"/>
    </step> 
</job>


<job id="jobC">     
    <step id="stepC" >
        <tasklet ref="steCTasklet" />
    </step>     
</job>

所以在这里,JobA和JobB触发了jobC。 JobC处理JobA和JobB提供的输入文件中的数据。如何为JobA和JobB设置不同的输入文件路径,以便将它们传递给JobC。

我们可以将它作为参数传递给JobA和JobB,但由于它是为JobA和JobB修复的,我不想将它们作为参数从外部传递。

JobA和JobB中的其他步骤也应该可以访问输入文件路径,这些步骤不会触发其他作业。

我也使用spring-batch-admin,所以我没有直接访问job launcher,因为它有自己的。

1 个答案:

答案 0 :(得分:1)

JobStep可以将JobParameterExtractor作为依赖关系,允许您从StepExecution中提取所需的作业参数。我们提供的实施是DefaultJobParametersExtractor。这将从StepExecution的{​​{1}}中提取作业的参数(您指定要使用的键)。此实现还包括作为参数传递给子作业的所有父作业的参数。

您可以在下面的链接中详细了解ExecutionContexthttp://docs.spring.io/spring-batch/trunk/reference/html/configureStep.html#external-flows http://docs.spring.io/spring-batch/trunk/apidocs/org/springframework/batch/core/step/job/JobParametersExtractor.html