[CS/데이터처리] 스프링 배치 - 9부

황제연·2025년 8월 28일

CS학습

목록 보기
181/194
post-thumbnail

Step

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

단순한 단일 태스크 뿐만 아니라 입력처리 및 출력과 관련된 복잡한 비즈니스 로직을
포함하는 모든 설정을 담고 있습니다

배치작업을 어떻게 구성하고 실행할 것인지 Job의 세부작업을 Task 기반으로 설정하고
명세해놓은 객체로 모든 Job은 하나 이상의 step으로 구성됩니다

기본 구현체

TaskletStep

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

PartitionStep

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

JobStep

Step 내에서 Job을 실행하도록 합니다

FlowStep

Step 내에서 Flow를 실행하도록 합니다

Step 도메인 구조

  • Step 인터페이스와 void execute(StepExecution stepExecution) 으로 구성되어 있습니다
  • 하위에 AbstractStep과 JobStep/TaskletStep/FlowStep/PartitionStep 구현체로 구성됩니다

실행 방식

Job에서 execute()로 여러 Step을 실행하고, 각 Step이 각자의 Tasklet을 execute()해서
실행합니다
Tasklet에는 Reader, Writer 같은 각자의 작업이 존재합니다

API 설정에 따른 각 Step 생성

TaskletStep

직접 실행한 Tasklet을 실행하는 방법과

return this.stepBuilderFactor.get("step").tasklet(myTastlet()).build();

ChunkOrientedTasktlet을 실행하는 방법이 존재합니다

return this.stepBuilderFactory.get("step").<Member, Member>chunk(100).reader(reader()).writer(writer()).build();

JobStep

Step에서 Job을 실행합니다

return this.stepBuilderFactory.get("step").<Member,Member>chunk(100).reader(reader()).writer(writer()).build();

FlowStep

Step에서 Flow를 실행합니다

return this.stepBuilderFactory.get("step").flow(myFlow()).build();

참고

  • 스프링 배치 - 정수원 인프런 강의
profile
Software Developer

0개의 댓글