博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Batch 注册监听器
阅读量:4051 次
发布时间:2019-05-25

本文共 7887 字,大约阅读时间需要 26 分钟。

– Start


Spring 支持如下监听器。

监听器 说明
JobExecutionListener 在 Job 开始之前(beforeJob)和之后(afterJob)触发
StepExecutionListener 在 Step 开始之前(beforeStep)和之后(afterStep)触发
ChunkListener 在 Chunk 开始之前(beforeChunk),之后(afterChunk)和错误后(afterChunkError)触发
ItemReadListener 在 Read 开始之前(beforeRead),之后(afterRead)和错误后(onReadError)触发
ItemProcessListener 在 Read 开始之前(beforeProcess),之后(afterProcess)和错误后(onProcessError)触发
ItemWriteListener 在 Read 开始之前(beforeWrite),之后(afterWrite)和错误后(onWriteError)触发
SkipListener 在 Read 开始之前(beforeWrite),之后(afterWrite)和错误后(onWriteError)触发

来看个简单的例子。

package shangbo.springbatch.example6;import org.springframework.batch.core.JobExecution;import org.springframework.batch.core.JobExecutionListener;public class SimpleJobExecutionListener implements JobExecutionListener {	@Override	public void beforeJob(JobExecution jobExecution) {		System.out.println("SimpleJobExecutionListener.beforeJob");	}	@Override	public void afterJob(JobExecution jobExecution) {		System.out.println("SimpleJobExecutionListener.afterJob");	}}
package shangbo.springbatch.example6;import org.springframework.batch.core.ExitStatus;import org.springframework.batch.core.StepExecution;import org.springframework.batch.core.StepExecutionListener;public class SimpleStepExecutionListener implements StepExecutionListener {	@Override	public void beforeStep(StepExecution stepExecution) {		System.out.println("SimpleStepExecutionListener.beforeStep");	}	@Override	public ExitStatus afterStep(StepExecution stepExecution) {		System.out.println("SimpleStepExecutionListener.afterStep");		return stepExecution.getExitStatus();	}}
package shangbo.springbatch.example6;import org.springframework.batch.core.ChunkListener;import org.springframework.batch.core.scope.context.ChunkContext;public class SimpleChunkListener implements ChunkListener {	@Override	public void beforeChunk(ChunkContext context) {		System.out.println("SimpleChunkListener.beforeChunk");	}	@Override	public void afterChunk(ChunkContext context) {		System.out.println("SimpleChunkListener.afterChunk");	}	@Override	public void afterChunkError(ChunkContext context) {		System.out.println("SimpleChunkListener.afterChunkError");	}}
package shangbo.springbatch.example6;import org.springframework.batch.core.ItemReadListener;public class SimpleItemReadListener implements ItemReadListener
{ @Override public void beforeRead() { System.out.println("SimpleItemReadListener.beforeRead"); } @Override public void afterRead(People item) { System.out.println("SimpleItemReadListener.afterRead -- " + item.getName()); } @Override public void onReadError(Exception ex) { System.out.println("SimpleItemReadListener.onReadError"); }}
package shangbo.springbatch.example6;import org.springframework.batch.core.ItemProcessListener;public class SimpleItemProcessListener implements ItemProcessListener
{ @Override public void beforeProcess(People item) { System.out.println("SimpleItemProcessListener.beforeProcess"); } @Override public void afterProcess(People item, People result) { System.out.println("SimpleItemProcessListener.afterProcess -- " + result.getName()); } @Override public void onProcessError(People item, Exception e) { System.out.println("SimpleItemProcessListener.onProcessError"); }}
package shangbo.springbatch.example6;import java.util.List;import org.springframework.batch.core.ItemWriteListener;public class SimpleItemWriteListener implements ItemWriteListener
{ @Override public void beforeWrite(List
items) { System.out.println("SimpleItemWriteListener.beforeWrite"); } @Override public void afterWrite(List
items) { System.out.println("SimpleItemWriteListener.afterWrite"); } @Override public void onWriteError(Exception exception, List
items) { System.out.println("SimpleItemWriteListener.onWriteError"); }}
package shangbo.springbatch.example6;import org.springframework.batch.core.SkipListener;public class SimpleSkipListener implements SkipListener
{ @Override public void onSkipInRead(Throwable t) { System.out.println("SimpleSkipListener.onSkipInRead"); } @Override public void onSkipInWrite(People item, Throwable t) { System.out.println("SimpleSkipListener.onSkipInWrite"); } @Override public void onSkipInProcess(String item, Throwable t) { System.out.println("SimpleSkipListener.onSkipInProcess"); }}
header
footer
package shangbo.springbatch.example6;public class People implements java.io.Serializable{	private static final long serialVersionUID = 8904705906008476310L;		private Integer id;	private String name;	public Integer getId() {		return id;	}	public void setId(Integer id) {		this.id = id;	}	public String getName() {		return name;	}	public void setName(String name) {		this.name = name;	}}
package shangbo.springbatch.example6;import java.util.HashMap;import java.util.Map;import org.springframework.batch.core.Job;import org.springframework.batch.core.JobParameter;import org.springframework.batch.core.JobParameters;import org.springframework.batch.core.JobParametersInvalidException;import org.springframework.batch.core.launch.JobLauncher;import org.springframework.batch.core.repository.JobExecutionAlreadyRunningException;import org.springframework.batch.core.repository.JobInstanceAlreadyCompleteException;import org.springframework.batch.core.repository.JobRestartException;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class App {	public static void main(String[] args) throws JobExecutionAlreadyRunningException, JobRestartException, JobInstanceAlreadyCompleteException, JobParametersInvalidException {		ApplicationContext context = new ClassPathXmlApplicationContext("shangbo/springbatch/example6/LoadFileJob.xml");		// job 和 job 参数		Map
parameters = new HashMap<>(); parameters.put("business_date", new JobParameter("20170704")); JobParameters jobParameters = new JobParameters(parameters); Job job = context.getBean(Job.class); // 运行 job JobLauncher jobLauncher = context.getBean(JobLauncher.class); jobLauncher.run(job, jobParameters); }}
信息: Job: [FlowJob: [name=loadFileJob]] launched with the following parameters: [{business_date=20170705}]SimpleJobExecutionListener.beforeJob七月 22, 2017 8:35:22 下午 org.springframework.batch.core.job.SimpleStepHandler handleStep信息: Executing step: [loadFileStep]SimpleStepExecutionListener.beforeStepSimpleChunkListener.beforeChunkSimpleItemReadListener.beforeReadSimpleItemReadListener.afterRead -- zhangsanSimpleItemReadListener.beforeReadSimpleItemReadListener.afterRead -- lisiSimpleItemReadListener.beforeReadSimpleItemReadListener.afterRead -- wangwuSimpleItemReadListener.beforeReadSimpleItemProcessListener.beforeProcessSimpleItemProcessListener.afterProcess -- zhangsanSimpleItemProcessListener.beforeProcessSimpleItemProcessListener.afterProcess -- lisiSimpleItemProcessListener.beforeProcessSimpleItemProcessListener.afterProcess -- wangwuSimpleItemWriteListener.beforeWriteSimpleItemWriteListener.afterWriteSimpleChunkListener.afterChunkSimpleStepExecutionListener.afterStepSimpleJobExecutionListener.afterJob

– 声 明:转载请注明出处
– Last Updated on 2017-07-22
– Written by ShangBo on 2017-07-22
– End

你可能感兴趣的文章
Django框架全面讲解 -- Form
查看>>
socket,accept函数解析
查看>>
今日互联网关注(写在清明节后):每天都有值得关注的大变化
查看>>
”舍得“大法:把自己的优点当缺点倒出去
查看>>
[今日关注]鼓吹“互联网泡沫,到底为了什么”
查看>>
[互联网学习]如何提高网站的GooglePR值
查看>>
[关注大学生]求职不可不知——怎样的大学生不受欢迎
查看>>
[关注大学生]读“贫困大学生的自白”
查看>>
[互联网关注]李开复教大学生回答如何学好编程
查看>>
[关注大学生]李开复给中国计算机系大学生的7点建议
查看>>
[茶余饭后]10大毕业生必听得歌曲
查看>>
gdb调试命令的三种调试方式和简单命令介绍
查看>>
C++程序员的几种境界
查看>>
VC++ MFC SQL ADO数据库访问技术使用的基本步骤及方法
查看>>
VUE-Vue.js之$refs,父组件访问、修改子组件中 的数据
查看>>
Vue-子组件改变父级组件的信息
查看>>
Python自动化之pytest常用插件
查看>>
Python自动化之pytest框架使用详解
查看>>
【正则表达式】以个人的理解帮助大家认识正则表达式
查看>>
性能调优之iostat命令详解
查看>>