728x90
- 스프링 배치에서 전 처리, 후 처리를 하는 다양한 종류의 Listener 존재.
- Listener interface 구현
- @Annotation 정의
- Job 실행 전과 후에 실행할 수 있는 JobExecutionListener
- Step 실행 전과 후에 실행할 수 있는 StepExecutionListener
Spring Web 모듈로 치면, Controller 전 처리, 후 처리를 담당하는 interceptor와 비슷한 개념으로 생각하면 된다.
StepListener
Step에 관련된 모든 Listener는 StepListener를 상속받는다.
- StepExecutionListener
- SkipListener
- ItemReadListener
- ItemProcessListener
- ItemWriteListener
- ChunkListener
각 인터페이스 설명
- SkipListener
- Skip은 Step의 예외처리 방법 중 하나이다.
- onSkipInRead: @OnSkipInRead
- ItemReader에서 Skip이 발생한 경우 호출
- onSkipInWrite: @OnSkipInWrite
- ItemWriter에서 Skip이 발생한 경우 호출
- onSkipInProcess: @OnSkipProcess
- ItemProcessor에서 Skip이 발생한 경우 호출
- ItemReadListener
- beforeRead: @BeforeRead
- ItemReader.read() 메서드 호출 전 호출
- afterRead: @AfterRead
- ItemReader.read() 메서드 호출 후 호출
- onReadError: @OnReadError
- ItemReader.read() 메서드에서 에러 발생 시 호출
- beforeRead: @BeforeRead
- ItemWriterListener
- beforeWrite: @BeforeRead
- ItemWriter.write() 메서드 호출 전 호출
- afterWrite: @AfterRead
- ItemWriter.write() 메서드 호출 후 호출
- onWriteError: @OnWriteError
- ItemWriter.write() 메서드에서 에러 발생 시 호출
- beforeWrite: @BeforeRead
- ItemProcessListener
- beforeProcess: @BeforeProcess
- ItemProcess.process() 메서드 호출 전 호출
- afterProcess: @AfterProcess
- ItemProcess.process() 메서드 호출 후 호출
- onProcessError: @OnProcessError
- ItemProcess.process() 메서드에서 에러 발생 시 호출
- beforeProcess: @BeforeProcess
- ChunkListener
- chunk는 중요한 개념이다.
- chunk 설정 시, 필수로 chunkSize를 지정했는데, 이 chunkSize는 총 처리될 아이템 갯수가 아니라, 전체 아이템 중에 몇 개의 아이템을 size 만큼씩 묶을 것인지 크기 설정이다.
- beforeChunk: @BeforeChunk
- chunk 실행 전 호출
- afterChunk: @AfterChunk
- chunk 실행 후 호출
- afterChunkError: @AfterChunkError
- chunk 실행 중 에러 발생 시 호출
- chunk는 중요한 개념이다.
728x90
'Spring Framework Module > Spring Batch' 카테고리의 다른 글
[Spring Batch] 기초 (0) | 2023.02.18 |
---|---|
[Spring Batch] 구조 (0) | 2023.02.18 |