[ 스프링 배치 입문 #3 ] - Listener

정동욱·2023년 7월 3일
0
post-thumbnail

이번 글에서는 Job의 시작과 뒤에 동작을 추가할 수 있는 Listener에 대해 알아볼텐데요, 이 기능을 이용해 시작과 끝 로그를 찍어보겠습니다.

먼저 리스너 클래스를 만들텐데요, JobExecutionListener 인터페이스를 구현합니다. 그리고 beforeJob()과 afterJob()을 오버라이딩합니다.

@Slf4j
public class JobLoggerListener implements JobExecutionListener {

    private static String BEFORE_MESSAGE = "{} Job is Runnung";
    private static String AFTER_MESSAGE = "{} Job is Done. (Status: {})";

    @Override
    public void beforeJob(JobExecution jobExecution) {
        log.info(BEFORE_MESSAGE, jobExecution.getJobInstance().getJobName());
    }

    @Override
    public void afterJob(JobExecution jobExecution) {
        log.info(AFTER_MESSAGE, jobExecution.getJobInstance().getJobName(),
        						jobExecution.getStatus());

        if (jobExecution.getStatus() == BatchStatus.FAILED) {
            log.info("Job is Failed");
        }
    }
}

그리고 이전의 검증 클래스와 같이 이 리스너 클래스를 Job에 등록해주면 됩니다.

    @Bean
    public Job jobListenerJob(Step jobListenerStep) {
        return jobBuilderFactory.get("jobListenerJob") // 이 Job의 이름을 지정
                .incrementer(new RunIdIncrementer()) // Job의 식별자인 id값 자동 증가
                .listener(new JobLoggerListener()) // Job의 리스너 등록
                .start(jobListenerStep) // 실행될 Step을 지정
                .build();
    }

다음 글에서는 DB의 주문 테이블에서 데이터를 읽고 처리해 정산 테이블에 이관하는 방법을 알아보겠습니다.

profile
거인의 어깨 위에서 탭댄스를

0개의 댓글