Spring Batch listeners example

摘要: In Spring batch, there are six “listeners” to intercept the step execution, I believe the class name should be self-explanatory.

In Spring batch, there are six “listeners” to intercept the step execution, I believe the class name should be self-explanatory.

  1. StepExecutionListener

  2. ItemReadListener

  3. ItemProcessListener

  4. ItemWriteListener

  5. ChunkListener

  6. SkipListener

1. Listener Example

Three listener examples, do nothing but print out a message.

CustomStepListener.java

package com.mkyong.listeners;
import org.springframework.batch.core.ExitStatus;
import org.springframework.batch.core.StepExecution;
import org.springframework.batch.core.StepExecutionListener;
public class CustomStepListener implements StepExecutionListener {
	@Override
	public void beforeStep(StepExecution stepExecution) {
		System.out.println("StepExecutionListener - beforeStep");
	@Override
	public ExitStatus afterStep(StepExecution stepExecution) {
		System.out.println("StepExecutionListener - afterStep");
		return null;

CustomItemReaderListener.java

package com.mkyong.listeners;
import org.springframework.batch.core.ItemReadListener;
import com.mkyong.Domain;
public class CustomItemReaderListener implements ItemReadListener<Domain> {
	@Override
	public void beforeRead() {
		System.out.println("ItemReadListener - beforeRead");
	@Override
	public void afterRead(Domain item) {
		System.out.println("ItemReadListener - afterRead");
	@Override
	public void onReadError(Exception ex) {
		System.out.println("ItemReadListener - onReadError");

CustomItemWriterListener.java

package com.mkyong.listeners;
import java.util.List;
import org.springframework.batch.core.ItemWriteListener;
import com.mkyong.Domain;
public class CustomItemWriterListener implements ItemWriteListener<Domain> {
	@Override
	public void beforeWrite(List<? extends Domain> items) {
		System.out.println("ItemWriteListener - beforeWrite");
	@Override
	public void afterWrite(List<? extends Domain> items) {
		System.out.println("ItemWriteListener - afterWrite");
	@Override
	public void onWriteError(Exception exception, List<? extends Domain> items) {
		System.out.println("ItemWriteListener - onWriteError");

2. Batch Jobs

A batch job, attached above three listeners.

spring-batch-job.xml

<bean id="customStepListener" 
          class="com.mkyong.listeners.CustomStepListener" />
    <bean id="customItemReaderListener" 
          class="com.mkyong.listeners.CustomItemReaderListener" />
    <bean id="customItemWriterListener" 
          class="com.mkyong.listeners.CustomItemWriterListener" />
    <job id="readFileJob" xmlns="http://www.springframework.org/schema/batch">
	<step id="step1">
	    <tasklet>
		<chunk reader="multiResourceReader" writer="flatFileItemWriter"
			commit-interval="1" />
		    <listeners>
			<listener ref="customStepListener" />
			<listener ref="customItemReaderListener" />
			<listener ref="customItemWriterListener" />
		    </listeners>
	    </tasklet>
	</step>
    </job>

Assume 3 records from a csv file are loaded and write it somewhere, here’s the console output :

StepExecutionListener - beforeStep
ItemReadListener - beforeRead
ItemReadListener - afterRead
ItemWriteListener - beforeWrite
ItemWriteListener - afterWrite
ItemReadListener - beforeRead
ItemReadListener - afterRead
ItemWriteListener - beforeWrite
ItemWriteListener - afterWrite
ItemReadListener - beforeRead
ItemReadListener - afterRead
ItemWriteListener - beforeWrite
ItemWriteListener - afterWrite
StepExecutionListener - afterStep

References

  1. Intercepting Step Execution

  2. StepExecutionListener JavaDoc

  3. ItemReadListener JavaDoc

  4. ItemProcessListener JavaDoc

  5. ItemWriteListener JavaDoc

  6. ChunkListener JavaDoc

  7. SkipListener JavaDoc

上一篇: Spring Batch Example – MySQL Database To XML
下一篇: Spring Batch Tasklet example
 评论 ( What Do You Think )
名称
邮箱
网址
评论
验证
   
 

 


  • 微信公众号

  • 我的微信

站点声明:

1、一号门博客CMS,由Python, MySQL, Nginx, Wsgi 强力驱动

2、部分文章或者资源来源于互联网, 有时候很难判断是否侵权, 若有侵权, 请联系邮箱:summer@yihaomen.com, 同时欢迎大家注册用户,主动发布无版权争议的 文章/资源.

3、鄂ICP备14001754号-3, 鄂公网安备 42280202422812号