首页 文章

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

提问于
浏览
1

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

我需要我的工作来实现另一个名为 rollBack 的方法

公共接口 IJobBase extends 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>

这是我开展工作的方式:

//根据工作名称创建工作

Job job = (Job) applicationContext.getBean(“backgroundJob”);

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

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

//检查ExitStatus

If(myJobExecution.getExitStatus().equals(ExitStatus.FAILED)){

//需要在 MyTaskletJob 上运行 rollback() 方法

My question is how to invoke the method rollback() method when JobExecution FAILED

1 回答

  • 0

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

相关问题