1. Intercepting Job Execution
- 이번 글에서는 잡 실행 전후에 커스텀 로직을 추가할 수 있는
JobExecutionListener를 소개합니다. - 스프링 배치의 모든 잡은 명확한 생명주기를 가집니다.
- 스프링 배치는 생명주기의 다양한 시점에 로직을 삽입할 수 있는 기능을 제공합니다.
JobExecutionListener는 배치 작업(Job)의 실행 전과 후에 커스텀 로직을 수행할 수 있도록 해주는 인터페이스입니다.- 이를 활용하면 작업 시작 전 초기화, 작업 완료 후 정리 등 필요한 처리를 쉽게 구현할 수 있습니다.
2. 활용 사례
2.1 주요 용도
- 알림: Job이 시작되거나 완료될 때 알림을 보내는 로직을 추가할 수 있습니다.
- 초기화: Job 실행 전에 필요한 리소스를 초기화하는 작업을 수행할 수 있습니다.
- 정리: Job 실행 후에 사용한 리소스를 정리하거나 후처리를 수행할 수 있습니다.
- 에러 처리: Job 실패 시 특별한 처리 로직을 수행할 수 있습니다.
3. JobExecutionListener 인터페이스
3.1 기본 구조
인터페이스 정의
package org.springframework.batch.core;
public interface JobExecutionListener {
default void beforeJob(JobExecution jobExecution) {
}
default void afterJob(JobExecution jobExecution) {
}
}
- JobExecutionListener는 두 개의 기본 메서드를 제공하는 함수형 인터페이스입니다.
3.2 메서드 설명
- beforeJob 메서드
- 잡을 실행하기 전에
beforeJob메서드가 자동으로 호출됩니다. - Job 시작 전 초기화 작업에 활용됩니다.
- 잡을 실행하기 전에
- afterJob 메서드
- 잡의 처리가 완료되면
afterJob메서드가 자동으로 호출됩니다. - 잡의 완료 상태에 관계없이 호출됩니다.
- 따라서 잡의 종료 상태에 따라 어떤 일을 수행할지 결정할 수 있습니다.
- 잡의 처리가 완료되면