Spring Batch : StepBuilderFactory
- Spring/Spring Batch
- 2022. 3. 5.
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의 객체의 클래스 다이어그램
- StepBuilderHelper 클래스는 공통 설정 클래스인 CommonStepProperties를 가지고 있으며, 메타 정보 기록을 위한 JobRepository 클래스도 가지고 있다.
- 각각의 Builder들은 StepBuilderHelper 객체를 상속받는다.
- StepBuilderFactory는 get() 메서드를 이용해 StepBuilder를 반환한다.
- StepBuilder는 전달되는 메서드에 따라서 TaskletStepBuilder, SimpleStepBuilder, PartitionStepBuilder, JobStepbuilder, FlowStepBuilder 등을 만든다.
- 각 하위 StepBuilder들은 각각의 Step을 만들어서 반환해준다.
StepBuilderFactory와 Transaction
StepBuilderFactory는 내부적으로 TransactionManager 객체를 가진다. 그리고 생성자 주입을 통해 Transaction 매니저를 주입받는다.
또한, get 메서드를 실행할 때 주입받았던 TransactionManager를 StepBuilder에 설정해준다. 따라서 StepBuilder를 통해서 만들어지는 Step은 결국 Transaction 설정이 알아서 될 것이라는 것을 예측할 수 있다. 물론, 좀 더 뒷쪽에 가서 정리할 예정이다.
'Spring > Spring Batch' 카테고리의 다른 글
SpringBatch : TaskLetStep의 StartLimit (0) | 2022.03.07 |
---|---|
Spring Batch : TaskLetStep 관련 정리 (0) | 2022.03.07 |
Spring Batch : SImpleJob Incrementer 관련 (0) | 2022.03.05 |
Spring Batch : SimpleJob의 구조도 (0) | 2022.03.05 |
Spring Batch : Simple Job의 preventRestart() (0) | 2022.03.05 |