[Spring Batch] JobExecutionListener, StepExecutionListener

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() 메서드에서 에러 발생 시 호출
  • ItemWriterListener
    • beforeWrite: @BeforeRead
      • ItemWriter.write() 메서드 호출 전 호출
    • afterWrite: @AfterRead
      • ItemWriter.write() 메서드 호출 후 호출
    • onWriteError: @OnWriteError
      • ItemWriter.write() 메서드에서 에러 발생 시 호출
  • ItemProcessListener
    • beforeProcess: @BeforeProcess
      • ItemProcess.process() 메서드 호출 전 호출
    • afterProcess: @AfterProcess
      • ItemProcess.process() 메서드 호출 후 호출
    • onProcessError: @OnProcessError
      • ItemProcess.process() 메서드에서 에러 발생 시 호출
  • ChunkListener
    • chunk는 중요한 개념이다.
      • chunk 설정 시, 필수로 chunkSize를 지정했는데, 이 chunkSize는 총 처리될 아이템 갯수가 아니라, 전체 아이템 중에 몇 개의 아이템을 size 만큼씩 묶을 것인지 크기 설정이다.
    • beforeChunk: @BeforeChunk
      • chunk 실행 전 호출
    • afterChunk: @AfterChunk
      • chunk 실행 후 호출
    • afterChunkError: @AfterChunkError
      • chunk 실행 중 에러 발생 시 호출
728x90

'Spring Framework Module > Spring Batch' 카테고리의 다른 글

[Spring Batch] 기초  (0) 2023.02.18
[Spring Batch] 구조  (0) 2023.02.18