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