– 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("