spring批处理:如何调用我的回滚实现
我有自己的Spring批处理作业(MyTaskletJob),它实现了我的接口IJobBase,它实现了Tasklet 我需要我的工作来实现另一种称为回滚的方法 公共界面IJobBase扩展Tasklet{spring批处理:如何调用我的回滚实现,spring,spring-batch,Spring,Spring Batch,我有自己的Spring批处理作业(MyTaskletJob),它实现了我的接口IJobBase,它实现了Tasklet 我需要我的工作来实现另一种称为回滚的方法 公共界面IJobBase扩展Tasklet{ void rollBack(); } 公共类MyTaskletJobIJobBase{ public RepeatStatus execute(StepContribution arg0, ChunkContext arg1){ …} publi
void rollBack();
}
公共类MyTaskletJobIJobBase{
public RepeatStatus execute(StepContribution arg0, ChunkContext arg1){
…}
public void rollBack(){
…}
}
弹簧配置:
<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(作业,作业参数)强>
//检查现有状态
If(myJobExecution.getExitStatus().equals(ExitStatus.FAILED)){
//需要在MyTaskletJob上运行rollback()方法
我的问题是当JobExecution失败时如何调用方法rollback()方法简单的方法是使用JobExecutionListener#afterJob(JobExecution)。您可以将对jobTaskletStep1的引用注入侦听器。从那里,您可以检查JobExecution中设置的状态,并根据需要调用该方法。如何将引用注入Job jobTaskletStep1