javascript
SpringBatch 监听器之Job监听器(JobExecutionListener)和Step监听器(StepExecutionListener)(五)
文章目錄
- 一、Job監(jiān)聽器-JobExecutionListener
- 二、Step監(jiān)聽器-StepExecutionListener
前言:例我們?cè)趫?zhí)行job時(shí)候,可能需要在job執(zhí)行之前預(yù)先對(duì)一些數(shù)據(jù)做處理,或者在job執(zhí)行之后需要做一些處理。這時(shí)候我們就可以使用到監(jiān)聽器來幫做我們處理,SpringBatch已經(jīng)幫我們預(yù)先留好接口了。
代碼已上傳GitHub上面地址:https://github.com/FadeHub/spring-boot-learn/tree/master/spring-boot-springbatch
在spring batch中主要以以下七種監(jiān)聽器為主:
- Step監(jiān)聽器 :監(jiān)聽step的執(zhí)行開始和結(jié)束;
- Job監(jiān)聽器 :監(jiān)聽job的執(zhí)行開始和結(jié)束;
- SkipListener監(jiān)聽器 :在讀、處理、寫的過程中,監(jiān)聽跳過的異常;
- ChunkListener監(jiān)聽器 :監(jiān)聽的chunk的執(zhí)行開始和結(jié)束,或者監(jiān)聽chunk出錯(cuò)
- ItemReadListener監(jiān)聽器:監(jiān)聽 讀之前、讀之后、讀的時(shí)候發(fā)生錯(cuò)誤
- ItemProcessListener監(jiān)聽器:監(jiān)聽 處理之前、處理之后、處理的時(shí)候發(fā)生錯(cuò)誤
- ItemWriteListener監(jiān)聽器:監(jiān)聽 寫之前、寫之后、寫的時(shí)候發(fā)生錯(cuò)誤
SpringBatch其它文章直通車:
- SpringBatch讀單個(gè)文件(FlatFileItemReader)和寫單個(gè)文件(FlatFileItemWriter)(一)
- SpringBatch順序讀取多文件(MultiResourceItemReader)和順序?qū)懳募?MultiResourceItemWriter)(二)
- SpringBatch讀數(shù)據(jù)庫(MyBatisPagingItemReader)(三)
- SpringBatch讀文件(FlatFileItemReader)寫據(jù)庫(MyBatisBatchItemWriter)(四)
- SpringBatch 監(jiān)聽器之Job監(jiān)聽器(JobExecutionListener)和Step監(jiān)聽器(StepExecutionListener)(五)
- SpringBatch 監(jiān)聽器之Chunk監(jiān)聽器(ChunkListener)和Skip監(jiān)聽器(SkipListener)(六)
- SpringBatch 配置多線程(TaskExecutor)啟動(dòng)Job詳解 (七)
一、Job監(jiān)聽器-JobExecutionListener
Job監(jiān)聽器有兩種實(shí)現(xiàn)方式:
1、使用注解@BeforeJob、@AfterJob
2、實(shí)現(xiàn)接口JobExecutionListener
我們以第二種實(shí)現(xiàn)方式為例 實(shí)現(xiàn)JobExecutionListener
CatJobListener
package com.sl.listener;import org.springframework.batch.core.JobExecution; import org.springframework.batch.core.JobExecutionListener; import org.springframework.stereotype.Component;/*** job監(jiān)聽器* @author shuliangzhao* @Title: CatJobListener* @ProjectName spring-boot-learn* @Description: TODO* @date 2019/9/11 19:24*/ @Component public class CatJobListener implements JobExecutionListener {@Overridepublic void beforeJob(JobExecution jobExecution) {System.out.println("job執(zhí)行執(zhí)行做處理");}@Overridepublic void afterJob(JobExecution jobExecution) {System.out.println("job執(zhí)行執(zhí)行做處理");} }在創(chuàng)建job時(shí)候添加監(jiān)聽器
@Beanpublic Job catJob() {return jobBuilderFactory.get("catJob").start(catStep()).listener(catJobListener).build();}二、Step監(jiān)聽器-StepExecutionListener
step監(jiān)聽器有兩種實(shí)現(xiàn)方式:
1、使用注解@BeforeStep、@AfterStep
2、實(shí)現(xiàn)接口StepExecutionListener
我們以第二種實(shí)現(xiàn)方式為例 實(shí)現(xiàn)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 {@Overridepublic void beforeStep(StepExecution stepExecution) {System.out.println("step執(zhí)行之前");}@Overridepublic ExitStatus afterStep(StepExecution stepExecution) {System.out.println("step執(zhí)行之后");return null;} }在創(chuàng)建step添加監(jiān)聽器
@Beanpublic Step catStep() {return stepBuilderFactory.get("catStep").listener(catStepListener).<Cat, CafeCat>chunk(10).reader(catCommonMybatisItemReader()).processor(cafeCatProcessor).writer(cafeCatCommonFileItemWriter()).build();}以上是Job監(jiān)聽器和Step監(jiān)聽器的簡單用法。我們可以根據(jù)自己的業(yè)務(wù)場(chǎng)景靈活運(yùn)用,會(huì)對(duì)你的代碼有很大幫助。
總結(jié)
以上是生活随笔為你收集整理的SpringBatch 监听器之Job监听器(JobExecutionListener)和Step监听器(StepExecutionListener)(五)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringBatch读文件(FlatF
- 下一篇: SpringBatch 多线程(Task