본문 바로가기

강의/스프링배치

StepBuilderfactory

taskletStepBuilder: tasklet 인터페이스를 구현한 구현체를 실행시킴

 

 

아래와 같이 batch job을 구성하였다.

@Bean
public Job batchJob() {
    return this.jobBuilderFactory.get("batchJob")
            .incrementer(new RunIdIncrementer())
            .start(step1())
            .next(step2())
            .next(step4())
            .next(step5())
//                .next(step3())
            .build();
}

 

step1을 살펴보겠습니다.

step1은 3가지 과정을 거치고 있습니다.

    - get 메서드 호출

    - tasklet 메서드 호출

    - build 메서드 호출

각각의 과정이 하는 역할을 살펴보도록 하겠습니다.

 

@Bean
public Step step1() {
    return stepBuilderFactory.get("step1")
            .tasklet((contribution, chunkContext) -> {
                System.out.println("step1 has executed");
                return RepeatStatus.FINISHED;
            })
            .build();
}

 

1. get 메서드 호출

// brief
get 메서드를 호출하게 되면 StepBuilder를 생성하고 return 받습니다.

stepbuilder factory는 step 이름과 jobRepository, transactionManager를 가지고 StepBuilder를 생성합니다.

2. tasklet 메서드 호출

// brief
tasklet 메서드 호출을 하게 되면 TaskletStepBuilder를 return 받는다.

 

3. build 메서드 호출

build 메서드를 실행하게 되면 taskletStep을 만들게 됩니다.

 

 

chunk 기반 step에 대해 알아보자.

1. get 메서드 호출 -> StepBuilder를 return 받음

2. chunk 메서드 호출 -> SimplestepBuilder를 return 받음

3. build 메서드 호출 -> taskletStep을 return 받음

@Bean
public Step step2() {
    return stepBuilderFactory.get("step2")
            .<String, String>chunk(3)
            .reader(() -> null)
            .writer(list -> {})
            .build();
}

 

multiThread 관련 작업을 위한 partitionalStep에 대해 알아보자.

1. get 메서드 호출 -> StepBilder

2. partitioner 메서드 호출 -> partitionStepBuilder

3. build 메서드 호출 -> partitionStep

@Bean
 public Step step3() {
     return stepBuilderFactory.get("step3")
             .partitioner(step1())
             .gridSize(2)
             .build();
 }

 

step내에서 job을 구동할 수 있는 step에 대해 알아보자.

1. get 메서드 호출 -> stepBuilder

2. partitioner 메서드 호출 -> jobStepBuilder 

3. build 메서드 호출 -> jobstep

 

flow step에 대해서 알아보자.

1. get 메서드 호출 -> stepBuilder

2. flow 메서드 호출 -> FlowStepBuilder

3. build 메서드 호출 -> flowStep 생성

 

 

 

 

 

'강의 > 스프링배치' 카테고리의 다른 글

tasklet() - startlimit() / allowStartIfComplete  (0) 2023.01.21
TaskletStep  (0) 2023.01.16
simpleJob 아키텍처  (0) 2023.01.15
스프링 배치 실행 - incrementer()  (0) 2023.01.15
스프링 배치 실행 - preventRestart()  (0) 2023.01.14