Lined Notebook

Spring Batch Step

by HeshAlgo

1. Step이란?

- Batch Job을 구성하는 독립적인 하나의 단계로서 실제 배치  처리를 정의하고 컨트롤하는데 필요한 모든 정보를 가지고 있는 도메인 객체

- 모든 Job은 하나 이상의 step으로 구성됨

 

2. 기본 구현체

1) Tasklet

- 가장 기본이 되는 클래스로서 Tasklet 타입의 구현체들을 제어

 

2) PartitionStep

- 멀티 스레드 방식으로 Step을 여러 개로 분리해서 실행

 

3) JobStep

- Step 내에서 Job을 실행

 

4) FlowStep

- Step 내에서 Flow를 실행

 

3. StepExecution

- Step에 대한 한번의 시도를 의미하는 객체로서 Step 실행 중에 발생한 정보들을 저장하는 객체

- Step이 매번 시도 될 때마다 각 Step별로 생성

- Job이 재시작 하더라도 이미 성공적으로 완료된 Step은 재시작하지 않고 실패된 Step만 실행

- 이전 단계에서 Step이 실패해서 현재 Step을 실행하지 않았다면 StepExecution을 생성하지 않음.

즉, Step이 실제로 시작되었을 때만 StepExecution을 생성

 

4. Flow

 

4. StepContribution

- 청크 프로세스의 변경사항을 StepExecution에 업데이트 해주는 도메인 객체

- 청크 커밋 직전에 StepExecution의 apply 메소드를 호출하여 상태를 업데이트

- ExitStatus의 기본 종료 코드 외 사용자 정의 종료코드를 생성해서 적용 가능

'Spring Batch' 카테고리의 다른 글

Spring Batch Job  (0) 2023.05.22
Spring Batch Introduction  (0) 2023.05.07
스프링 배치 DB 스키마  (0) 2022.02.01

블로그의 정보

꾸준히 공부하는 개발 노트

HeshAlgo

활동하기