Day 5. 잡 리스너 이해하기

Day 5. 잡 리스너 이해하기

작성하는 방법 1

org.springframeowork.batch.core.JobExecutionListener 인터페이스를 구현 위에서 말한대로 beforeJob과 afterJob 두 메서드를 가지고 있다

각각은 JobExecution을 파라미터로 전달받아 실행되며 각각 잡을 실행하기 전, 잡을 실행된 후에 실행된다

afterJob 메서드는 잡의 완료 상태와 관계없이 호출된다

JobExecutionListener 작성

// JobLoggerListener.java public class JobLoggerListener implements JobExecutionListener { private static final String START_MESSAGE = "%s is beginning execution"; private static final String END_MESSAGE = "%s has completed with the status %s"; @Override public void beforeJob(JobExecution jobExecution) { System.out.println(String.format(START_MESSAGE, jobExecution.getJobInstance().getJobName())); } @Override public void afterJob(JobExecution jobExecution) { System.out.println(String.format(END_MESSAGE, jobExecution.getJobInstance().getJobName(), jobExecution.getStatus())); } }​

Job 작성

// JobLoggerListenerBatch.java @RequiredArgsConstructor @Configuration public class JobLoggerListenerBatch { private static final String JOB_NAME = "jobLoggerListenerBatchJob"; private static final String STEP_NAME = "jobLoggerListenerBatchStep"; private final JobBuilderFactory jobBuilderFactory; private final StepBuilderFactory stepBuilderFactory; @Bean(JOB_NAME) public Job jobLoggerListenerBatchJob() { return this.jobBuilderFactory.get(JOB_NAME) .start(jobLoggerListenerBatchStep()) .incrementer(new RunIdIncrementer()) .listener(new JobLoggerListener()) .build(); } @Bean(STEP_NAME) public Step jobLoggerListenerBatchStep() { return this.stepBuilderFactory.get(STEP_NAME) .tasklet((contribution, chunkContext) -> { System.out.println("tasklet execute"); return RepeatStatus.FINISHED; }) .build(); } }​

from http://joojimin.tistory.com/94 by ccl(A) rewrite - 2021-11-26 00:28:10