什么是Spring Batch“默认”上下文变量?

时间:2014-03-05 18:10:48

标签: spring spring-batch spring-el

Spring Batch step-scope documentation中,有三个无法解释的春季批量背景地图:jobParametersjobExecutionContextstepExecutionContext

Springsource示例代码,合并:

<bean id="flatFileItemReader" scope="step"
  class="org.springframework.batch.item.file.FlatFileItemReader">
    <property name="var1" value="#{jobParameters['input.file.name']}" />
    <property name="var2" value="#{jobExecutionContext['input.file.name']}" />
    <property name="var3" value="#{stepExecutionContext['input.file.name']}" />
</bean>

jobParametersjobExecutionContextstepExecutionContext中可用的默认参数是什么?

Spring Batch版本1.x与2.x与3.x之间的差异也可能存在差异 - 该领域的文档非常缺乏。

3 个答案:

答案 0 :(得分:4)

没有任何默认值。将jobParametersjobExecutionContextstepExecutionContext视为具有不同原始数据类型的辅助方法的美化Map,例如getInt()。它们通常从传递给StepExecution的{​​{1}}和JobExecution个对象访问,或者使用值注入进行注入,例如*ExecutionListener

在这种情况下,@Value("#{jobParameters['foo']}")只是开发者选择的名称,例如可能对应于为input.file.name指定的命令行作业参数。

答案 1 :(得分:1)

#{jobParameters}#{jobExecutionContext}#{stepExecutionContext}JobParametersJobExecutionStepExecution对象的spEL(Spring Expression Language)副本后期绑定允许从步骤作用域对象非静态访问此对象值。

他们支持Map访问权限,因此您可以访问与JobExecutionStepExecution相关联的ExecutionContext以及JobParameters中存储的值。

另请查看StepScope文档以获取更多信息。

答案 2 :(得分:0)

请参阅documentation

JobParameters是启动作业时传入的参数

执行上下文可供您用于存储您想要的任何内容。通常,步骤执行上下文将包含允许步骤重新启动的信息(对于可重新启动的作业)。

如果要在步骤之间传递信息,步骤执行上下文中的元素可以是promoted to the job execution context