Spring Batch : StepBuilderFactory

    StepBuilderFactory

    Job을 만들기 위해서 JobbuilderFactory를 사용했었다. 이것과 마찬가지로 Step을 만들기 위해서는 StepBuilderFactory를 이용해야한다. 이번 포스팅에서는 StepBuilderFactory가 어떤 형식으로 어떤 Job을 만들어내는지 간단하게 정리하려고 한다. 

     


    StepBuilderFactory의 객체 생성

    StepBuilderFactory에서 get() 메서드를 이용하면 StepBuilder를 반환해준다. StepBuilder는 어떤 메서드를 사용하고, 어떤 메서드를 사용하는지에 따라 여러 종류의 하위 StepBuilder를 반환해준다. 그리고 이 하위 StepBuilder를 이용해서 Step을 만들게 된다. 

    메서드 생성 Builder
    tasklet(tasklet()) TaskletStepBuilder
    chunk(chunkSize) SimplStepBuilder
    chunk(completionPolicy)
    partitioner(stepName, partitioner) PartitionStepBuilder
    partitioner(step)
    job(job) JobStepBuilder
    flow(flow) FlowStepBuilder

     

     

    StepBuilderFactory의 객체의 클래스 다이어그램

     

    1. StepBuilderHelper 클래스는 공통 설정 클래스인 CommonStepProperties를 가지고 있으며, 메타 정보 기록을 위한 JobRepository 클래스도 가지고 있다. 
    2. 각각의 Builder들은 StepBuilderHelper 객체를 상속받는다. 
    3. StepBuilderFactory는 get() 메서드를 이용해 StepBuilder를 반환한다.
    4. StepBuilder는 전달되는 메서드에 따라서 TaskletStepBuilder, SimpleStepBuilder, PartitionStepBuilder, JobStepbuilder, FlowStepBuilder 등을 만든다. 
    5. 각 하위 StepBuilder들은 각각의 Step을 만들어서 반환해준다. 

     

     

    StepBuilderFactory와 Transaction

    StepBuilderFactory는 내부적으로 TransactionManager 객체를 가진다. 그리고 생성자 주입을 통해 Transaction 매니저를 주입받는다. 

    또한, get 메서드를 실행할 때 주입받았던 TransactionManager를 StepBuilder에 설정해준다. 따라서 StepBuilder를 통해서 만들어지는 Step은 결국 Transaction 설정이 알아서 될 것이라는 것을 예측할 수 있다. 물론, 좀 더 뒷쪽에 가서 정리할 예정이다.

    댓글

    Designed by JB FACTORY