In the Spring Batch step-scope documentation, there are three unexplained spring-batch context maps: jobParameters
, jobExecutionContext
, and stepExecutionContext
.
Springsource sample code, combined:
<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>
What are the default parameters available within jobParameters
, jobExecutionContext
, and stepExecutionContext
?
There are also likely differences between what's available in Spring Batch version 1.x vs. 2.x vs. 3.x--the documentation is pretty scarce in this area.
There aren't any default values. Think of jobParameters
, jobExecutionContext
, and stepExecutionContext
as glorified Map
s with helper methods for different primitive data types, e.g. getInt()
. They're typically accessed from the StepExecution
and JobExecution
objects passed to *ExecutionListener
s, or injecting using value injection, e.g. @Value("#{jobParameters['foo']}")
.
In this case, input.file.name
is just a name chosen by the developer, e.g. maybe corresponding to a command line job parameter specified to the CommandLineJobRunner
.
#{jobParameters}
, #{jobExecutionContext}
and #{stepExecutionContext}
are the spEL (Spring Expression Language) counterpart of JobParameters, JobExecution and StepExecution objects available in late-binding to allow non-static access to this objects values from step scoped object.
They support access as Map
s so you can access the ExecutionContext associated to JobExecution
and StepExecution
and values stored in JobParameters
.
Also check StepScope documentation for more information.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With