spring batch:如何调用我的RollBack实现

时间:2013-03-07 08:13:11

标签: spring spring-batch

我有自己的Spring Batch Job( MyTaskletJob ),它实现了我的接口 IJobBase ,它实现了 Tasklet

我需要我的工作来实现另一种名为 rollBack

的方法

公共界面 IJobBase 扩展 Tasklet {

 void rollBack();

}

公共类 MyTaskletJob IJobBase {

    public RepeatStatus execute(StepContribution arg0, ChunkContext arg1){

            …}
    public void rollBack(){

            …}

}

Spring配置:

<bean id="jobTaskletStep1" class="com....job.MyTaskletJob ">
    <property name="message" value="Hello..." />
</bean>
<batch:job id="backgroundJob">
<batch:step id="step0">
        <batch:tasklet ref="jobTaskletStep1"/>
        </batch:step>
</batch:job>

这是我开展工作的方式:

//根据工作名称

创建工作

作业作业=(作业)applicationContext.getBean(“backgroundJob”);

//运行作业 - jobLauncher 将运行 MyTaskletJob * 执行 *方法

JobExecution myJobExecution = jobLauncher.run(job,jobParameters);

//检查ExitStatus

如果(myJobExecution.getExitStatus()。等于(ExitStatus.FAILED)){

//需要在 MyTaskletJob

上运行 rollback()方法

我的问题是如何在JobExecution失败时调用方法rollback()方法

1 个答案:

答案 0 :(得分:0)

简单的方法是使用JobExecutionListener #afterJob(JobExecution)。您可以将jobTaskletStep1的引用注入到侦听器中。从那里,您可以检查JobExecution中设置的状态,并根据需要调用该方法。