1. Spring Batch Step Listener 소개
- Spring Batch에서 Step 실행 과정 중에는 다양한 이벤트가 발생하며, 개발자는 이러한 이벤트에 대해 특정 로직을 수행해야 할 경우가 있습니다.
- 예를 들어, 플랫 파일 작성 시 푸터를 추가하려면 Step이 완료되었을 때 ItemWriter에게 알림을 보내야 합니다.
- Spring Batch는 이러한 요구사항을 충족하기 위해 다양한 Step 범위의 Listener를 제공합니다.
정보
Step Listener는 Step, Tasklet, 또는 Chunk 선언 내에서 listeners 엘리먼트를 통해 적용할 수 있습니다. 기능이 적용되는 레벨에서 리스너를 선언하는 것을 권장합니다.
2. Step Listener 등록 방법
2.1 Java Configuration을 통한 등록
Java Configuration 예시
@Bean
public Step step1(JobRepository jobRepository, PlatformTransactionManager transactionManager) {
return new StepBuilder("step1", jobRepository)
.<String, String>chunk(10, transactionManager)
.reader(reader())
.writer(writer())
.listener(chunkListener())
.build();
}
위 예시는 chunk 레벨에서 리스너를 적용하는 방법을 보여줍니다.
2.2 자동 등록
- ItemReader, ItemWriter, 또는 ItemProcessor가 StepListener 인터페이스를 구현하는 경우, Step에 자동으로 등록됩니다.
- 이는 해당 컴포넌트가 Step에 직접 주입된 경우에만 적용됩니다.
- 리스너가 다른 컴포넌트 내부에 중첩되어 있는 경우에는 명시적으로 등록해야 합니다.