Spring 4.3 with Spring Batch 3.0.8。
我希望在处理器中引用作业执行ID,因此我可以将其放在输出对象中,并将其与数据一起写入db。这是我的设置如下。
我添加了blueReportJobExecutionListener,它为我提供了我需要的JobExecution ID ....但是如何将它发送到我的blueReportItemProcessor?那是需要这个价值的对象。
<bean id="blueReportJobExecutionListener" class="com.cloud.cost.listener.BlueReportJobExecutionListener" scope="prototype" />
<bean id="blueReportJobListener" class="com.cloud.cost.listener.BlueReportJobListener" scope="prototype" />
<bean id="blueReportStepListener" class="com.cloud.cost.listener.BlueReportStepListener" scope="prototype" />
<batch:job id="blueReportJob">
<batch:step id="blueReportStep">
<batch:tasklet>
<batch:chunk reader="blueReportCSVFileItemReader" processor="blueReportItemProcessor" writer="mysqlItemWriter"
commit-interval="2">
</batch:chunk>
</batch:tasklet>
<batch:listeners>
<batch:listener ref="blueReportStepListener"/>
</batch:listeners>
</batch:step>
<batch:listeners>
<batch:listener ref="blueReportJobListener"/>
<batch:listener ref="**blueReportJobExecutionListener**"/>
</batch:listeners>
</batch:job>
答案 0 :(得分:0)
您只需使用@Value注释即可从Job Execution获取值。
@Value("#{jobExecutionContext['JOB_ID']}")
其中JOB_ID是您在侦听器中用于添加作业ID的键。
确保您的处理器范围定义为步骤,否则此值将不会自动装配。