前言:例我们在执行job时候,可能需要在job执行之前预先对一些数据做处理,或者在job执行之后需要做一些处理。这时候我们就可以使用到监听器来帮做我们处理,SpringBatch已经帮我们预先留好接口了。
代码已上传GitHub上面地址:https://github.com/FadeHub/spring-boot-learn/tree/master/spring-boot-springbatch
在spring batch中主要以以下七种监听器为主:
- Step监听器 :监听step的执行开始和结束;
- Job监听器 :监听job的执行开始和结束;
- SkipListener监听器 :在读、处理、写的过程中,监听跳过的异常;
- ChunkListener监听器 :监听的chunk的执行开始和结束,或者监听chunk出错
- ItemReadListener监听器:监听 读之前、读之后、读的时候发生错误
- ItemProcessListener监听器:监听 处理之前、处理之后、处理的时候发生错误
- ItemWriteListener监听器:监听 写之前、写之后、写的时候发生错误
SpringBatch其它文章直通车:
- SpringBatch读单个文件(FlatFileItemReader)和写单个文件(FlatFileItemWriter)(一)
- SpringBatch顺序读取多文件(MultiResourceItemReader)和顺序写文件(MultiResourceItemWriter)(二)
- SpringBatch读数据库(MyBatisPagingItemReader)(三)
- SpringBatch读文件(FlatFileItemReader)写据库(MyBatisBatchItemWriter)(四)
- SpringBatch 监听器之Job监听器(JobExecutionListener)和Step监听器(StepExecutionListener)(五)
- SpringBatch 监听器之Chunk监听器(ChunkListener)和Skip监听器(SkipListener)(六)
- SpringBatch 配置多线程(TaskExecutor)启动Job详解 (七)
一、Job监听器-JobExecutionListener
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监听器-StepExecutionListener
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监听器的简单用法。我们可以根据自己的业务场景灵活运用,会对你的代码有很大帮助。
版权声明:本文为TreeShu321原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。