Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
spring批处理:如何调用我的回滚实现_Spring_Spring Batch - Fatal编程技术网

spring批处理:如何调用我的回滚实现

spring批处理:如何调用我的回滚实现,spring,spring-batch,Spring,Spring Batch,我有自己的Spring批处理作业(MyTaskletJob),它实现了我的接口IJobBase,它实现了Tasklet 我需要我的工作来实现另一种称为回滚的方法 公共界面IJobBase扩展Tasklet{ void rollBack(); } 公共类MyTaskletJobIJobBase{ public RepeatStatus execute(StepContribution arg0, ChunkContext arg1){ …} publi

我有自己的Spring批处理作业(MyTaskletJob),它实现了我的接口IJobBase,它实现了Tasklet

我需要我的工作来实现另一种称为回滚的方法

公共界面IJobBase扩展Tasklet{

 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