在Spring Batch step-scope documentation中,有三个无法解释的春季批量背景地图:jobParameters
,jobExecutionContext
和stepExecutionContext
。
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>
jobParameters
,jobExecutionContext
和stepExecutionContext
中可用的默认参数是什么?
Spring Batch版本1.x与2.x与3.x之间的差异也可能存在差异 - 该领域的文档非常缺乏。
答案 0 :(得分:4)
没有任何默认值。将jobParameters
,jobExecutionContext
和stepExecutionContext
视为具有不同原始数据类型的辅助方法的美化Map
,例如getInt()
。它们通常从传递给StepExecution
的{{1}}和JobExecution
个对象访问,或者使用值注入进行注入,例如*ExecutionListener
。
在这种情况下,@Value("#{jobParameters['foo']}")
只是开发者选择的名称,例如可能对应于为input.file.name
指定的命令行作业参数。
答案 1 :(得分:1)
#{jobParameters}
,#{jobExecutionContext}
和#{stepExecutionContext}
是JobParameters,JobExecution和StepExecution对象的spEL(Spring Expression Language)副本后期绑定允许从步骤作用域对象非静态访问此对象值。
他们支持Map
访问权限,因此您可以访问与JobExecution
和StepExecution
相关联的ExecutionContext以及JobParameters
中存储的值。
另请查看StepScope文档以获取更多信息。
答案 2 :(得分:0)
JobParameters是启动作业时传入的参数
执行上下文可供您用于存储您想要的任何内容。通常,步骤执行上下文将包含允许步骤重新启动的信息(对于可重新启动的作业)。
如果要在步骤之间传递信息,步骤执行上下文中的元素可以是promoted to the job execution context。