spring batch:如何调用我的 RollBack 实现
Posted
技术标签:
【中文标题】spring batch:如何调用我的 RollBack 实现【英文标题】:spring batch: How To call my RollBack implementation 【发布时间】:2013-02-22 08:29:53 【问题描述】:我有自己的 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>
这就是我运行工作的方式:
//根据作业名创建作业
Job job = (Job) applicationContext.getBean(“backgroundJob”);
// 运行作业 - jobLauncher 将运行 MyTaskletJob *execute* 方法
JobExecution myJobExecution = jobLauncher.run(job, jobParameters);
//检查退出状态
If(myJobExecution.getExitStatus().equals(ExitStatus.FAILED))
// 需要在MyTaskletJob
上运行rollback()方法我的问题是当JobExecution FAILED时如何调用rollback()方法
【问题讨论】:
【参考方案1】:简单的方法是使用 JobExecutionListener#afterJob(JobExecution)。您可以将对 jobTaskletStep1 的引用注入到侦听器中。从那里您可以检查 JobExecution 中设置的状态并根据需要调用该方法。
【讨论】:
我怎样才能注入对作业jobTaskletStep1的引用以上是关于spring batch:如何调用我的 RollBack 实现的主要内容,如果未能解决你的问题,请参考以下文章
Spring-batch:如何在 Spring Batch 中使用 skip 方法捕获异常消息?
关于这个 Spring Batch @Scheduled() 注解以及如何手动启动 Spring Batch 作业的一些疑问?
如何防止我的 Spring Boot Batch 应用程序在执行测试时运行?