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

JJ *_*kar 8 spring spring-batch spring-el

Spring Batch的步范围文档中,有三个原因不明的弹簧一批关系网图: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>
Run Code Online (Sandbox Code Playgroud)

什么是默认的参数范围内使用jobParameters,jobExecutionContextstepExecutionContext

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

Eme*_*gia 5

没有任何默认值。可以将jobParametersjobExecutionContextstepExecutionContext视为Map具有针对不同原始数据类型(例如)的辅助方法的光荣的getInt()。通常是从StepExecutionJobExecution传递给*ExecutionListeners的对象访问它们,或者使用值注入(例如)进行注入@Value("#{jobParameters['foo']}")

在这种情况下,input.file.name仅仅是开发人员选择的名称,例如,可能对应于指定给的命令行作业参数CommandLineJobRunner


Luc*_*cci 3

#{jobParameters}#{jobExecutionContext}#{stepExecutionContext}是 spEL(Spring 表达式语言)对应的JobParametersJobExecutionStepExecution对象,可在后期绑定中使用,以允许从步骤范围对象非静态访问此对象值。

它们支持 s 访问Map,因此您可以访问与和关联的ExecutionContext以及存储在 中的值。JobExecutionStepExecutionJobParameters

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