前言:例我们在执行job时候,可能需要在job执行之前预先对一些数据做处理,或者在job执行之后需要做一些处理。这时候我们就可以使用到监听器来帮做我们处理,SpringBatch已经帮我们预先留好接口了。
代码已上传GitHub上面地址:https://github.com/FadeHub/spring-boot-learn/tree/master/spring-boot-springbatch
在spring batch中主要以以下七种监听器为主:
SpringBatch其它文章直通车:
Job监听器有两种实现方式:
1、使用注解@BeforeJob、@AfterJob
2、实现接口JobExecutionListener
我们以第二种实现方式为例 实现JobExecutionListener
CatJobListener
package com.sl.listener;
import org.springframework.batch.core.JobExecution;
import org.springframework.batch.core.JobExecutionListener;
import org.springframework.stereotype.Component;
/**
* job监听器
* @author shuliangzhao
* @Title: CatJobListener
* @ProjectName spring-boot-learn
* @Description: TODO
* @date 2019/9/11 19:24
*/
@Component
public class CatJobListener implements JobExecutionListener {
@Override
public void beforeJob(JobExecution jobExecution) {
System.out.println("job执行执行做处理");
}
@Override
public void afterJob(JobExecution jobExecution) {
System.out.println("job执行执行做处理");
}
}
在创建job时候添加监听器
@Bean
public Job catJob() {
return jobBuilderFactory.get("catJob")
.start(catStep())
.listener(catJobListener)
.build();
}
step监听器有两种实现方式:
1、使用注解@BeforeStep、@AfterStep
2、实现接口StepExecutionListener
我们以第二种实现方式为例 实现StepExecutionListener
CatStepListener
package com.sl.listener;
import org.springframework.batch.core.ExitStatus;
import org.springframework.batch.core.StepExecution;
import org.springframework.batch.core.StepExecutionListener;
import org.springframework.stereotype.Component;
/**
* @author shuliangzhao
* @Title: CatStepListener
* @ProjectName spring-boot-learn
* @Description: TODO
* @date 2019/9/11 19:48
*/
@Component
public class CatStepListener implements StepExecutionListener {
@Override
public void beforeStep(StepExecution stepExecution) {
System.out.println("step执行之前");
}
@Override
public ExitStatus afterStep(StepExecution stepExecution) {
System.out.println("step执行之后");
return null;
}
}
在创建step添加监听器
@Bean
public Step catStep() {
return stepBuilderFactory.get("catStep")
.listener(catStepListener)
.<Cat, CafeCat>chunk(10)
.reader(catCommonMybatisItemReader())
.processor(cafeCatProcessor)
.writer(cafeCatCommonFileItemWriter())
.build();
}
以上是Job监听器和Step监听器的简单用法。我们可以根据自己的业务场景灵活运用,会对你的代码有很大帮助。