我希望我的处理器能够访问JobExecutionId

问题描述 投票:0回答:1

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>
spring spring-batch
1个回答
0
投票

您可以通过简单地使用@Value注释从Job Execution获取值。

@Value("#{jobExecutionContext['JOB_ID']}")

其中JOB_ID是您在侦听器中用于添加作业ID的键。

确保您的处理器范围定义为步骤,否则该值将不会自动装配。

© www.soinside.com 2019 - 2024. All rights reserved.