【发布时间】:2020-03-19 08:41:08
【问题描述】:
我有一个正常工作的 Spring 批处理作业;我添加了一个作业侦听器来更改应用程序的退出状态,但该作业永远不会进入侦听器(从不调用 beforeJob 和 afterJob)。这是我的代码的一部分:
@Bean(name = "myJob")
public Job myJob(@Qualifier("initStep") Step initStep,
@Qualifier("firstStep") Step firstStep,
@Qualifier("onSuccessStep") Step onSuccessStep) {
return jobBuilderFactory.get("myJob")
.listener(new JobExecutionListener() {
@Override
public void beforeJob(JobExecution jobExecution) {
}
@Override
public void afterJob(JobExecution jobExecution) {
ExitStatus exitStatus = jobExecution.getExitStatus() ;
if(exitStatus != ExitStatus.COMPLETED ){
System.exit(1);
}
}
})
.start(initStep)
.next(firstStep)
.next(onSuccessStep)
.build();
}
作业正确开始和结束,但它永远不会进入侦听器;有什么建议吗?
【问题讨论】:
-
不幸的是无法帮助未执行侦听器(此代码适用于我)。请注意 ExitStatus 不是枚举,因此您必须将它们的 exitCode 属性与 equals 进行比较。
标签: java spring spring-boot spring-batch