我有自己的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()方法
答案 0 :(得分:0)
简单的方法是使用JobExecutionListener #afterJob(JobExecution)。您可以将jobTaskletStep1的引用注入到侦听器中。从那里,您可以检查JobExecution中设置的状态,并根据需要调用该方法。