1. Step
독립적인 단계
Job은 가장 큰 틀의 명세서
Job 안에 우리가 구현해야할 그런 기술적인 내용을 담지는 않는다. Job은 큰 틀의 구성과 설정이기 때문이다.
실제 비지니스 로직은 Step이라는 도메인 객체에 포함하게 된다.
Step은 인터페이스기 때문에 이를 구현한 구현체를 Spring이 제공하고 있다. 물론 직접 구현해도 상관이 없다.
물론 spring batch가 제공하는 step의 구현체를 이용하여도 대부분 잘 사용할 수 있다.
TaskletStep, Partitionstep, JobStep, FlowStep
구조를 살펴보자
Step 인터페이스
이를 구현한 AbstractStep
Job이라는 도메인이 있고
Job의 bean을 생성하고
Job은 여러개의 step을 포함한다.
Step은 내부적으로 tasklet 속성이 있고
tasklet은 interface이다.
tasklet의 객체를 포함하고 있고 수행중에 execute 해서 실행시킨다.
tasklet 안에는 학습한 적이 없지만
chunk 기반 프로세싱을 배울때 나오는데
itemReader, itemProcessor, itemWriter들을 포함할 수 있따.
우리가 custom하게 단일 task에 tasklet안에 구성할 수 있다.
4가지 step에 대해서 살펴보자
첫번째 tasklet은 우리가 직접 만들어서 사용하는 tasklet step이다.
두번째 tasklet은 청크기반 프로세스를 진행할 수 있는 청크 오리엔티드 테스크릿을 내부적으로 만들어서
tasklet이 itemreader, itemwriter, itemprocessor를 실행시키는 구조로 되어있다.
세번째 jobstep은 step 내에서 job을 다시 실행시키는 것이다.
step이 생성되는 과정
stepBuilderFacotry.get("").tasklet()
-> tasklet을 받아서 TaskletStepbuilder를 return 해줌. (TaskletStep을 만들어주는 클래스)
stepBuilderFacotry.get("").tasklet().build()
-> AbstractTaskletStepBuilder.class
TaskletStep step = new TaskletStep(getName());
// createTasklet은 이전 단계에서 설정해놓았던 tasklet을 return 해준다.
step.setTasklet(createTasklet());
'강의 > 스프링배치' 카테고리의 다른 글
스프링배치 도메인 이해 - StepContribution (0) | 2022.12.30 |
---|---|
스프링 배치 도메인 이해 - Step Execution (0) | 2022.12.29 |
스프링 배치 도메인 이해 - JobExecution (0) | 2022.12.27 |
스프링 배치 도메인 이해 - Job + JobInstance + JobParameter (0) | 2022.12.27 |
스프링 배치 - DB 스키마 생성 (2) (0) | 2022.12.26 |