- Listener -

1) Listener?

2) Listener의 종류

  1. JobExecutionListener
  2. StepExecutionListener
  3. ChunkListener
  4. ItemReadListener
  5. ItemProcessListener
  6. ItemWriteListener

3) JobExecutionListener

public interface JobExecutionListener {
	void beforeJob(JobExecution jobExecution);
	void afterJob(JobExecution jobExecution);
}

@Bean
public Job sampleJob(
		JobBuilderFactory jobBuilderFactory,
		JobListener jobListener,
		Step sampleStep
){
	return jobBuilderFactory
					.get("sampleJob")
					.listener(jobListener)
					.start(sampleStep)
					.build();
}
public class JobListener implements JobExecutionListener {
	@Override
	public void afterJob(JobExecution jobExecution) {
		// jobExecution의 Job Instance
		jobExecution.getJobInstance();
		// jobExecution 에서 사용한 Job Parameters
		jobExecution.getJobParameters();
		// job 시작시간과 종료시간
		jobExecution.getStartTime();
		jobExecution.getEndTime();
		// job의 실행결과 (exit code)
		jobExecution.getExitStatus();
		// job의 현재상태 (Batch Status)
		jobExecution.getStatus();
		// job execution context
		jobExecution.getExecutionContext();
	}
}

public class JobListener implements JobExecutionListener {
	@Override
	public void beforeJob(JobExecution jobExecution) {
		// job execution context
		jobExecution.getExecutionContext();
		Map<String, Object> executionContextMap = new HashMap<>();
		executionContextMap.put("name", "홍길동");
		executionContextMap.put("birth", LocalDate.of(1998, 1, 2));
		jobExecution.setExecutionContext(
			new ExecutionContext(executionContextMap)
		);
	}
}