SimpleJob spring batch가 기본적으로 제공하는 구현체
SimpleJobBuilder에 의해 생성됨
JobBuilder -> SimpleJobBuilder -> SimpleJob 생성 -> Step을 순차적으로 실행 시
SimpleJob에는 여러 요소가 있다.
각각을 살펴보자.
.start 메서드를 통해 simpleJobBuilder를 반환하게 되고,
simpleJob객체에다가 simpleJobBuilder 항목이 가지고 있는 설정을 하게 된다.
(.incrementer, preventRestart, validator, listener 등등.....)
preventRestart
실패하더라도 재시작을 못하게 하려면 preventRestart에 false라는 값을 주면 된다.
(재시작 불가)
listener
job이 실행 전, job 실행 후에 특정 시점에 콜백을 제공받도록 하는 것
job뿐 아니라 step, itemReader, skip 클래스에도 listener를 설정할 수 있도록 한다.
simple job이 생성되는 과정
앞에서 배웠던 부분이다. 그림을 바탕으로 코드를 확인해보자.
JobBuilderFactory.get 메서드를 실행하게 되면 jobBuilder를 return 하게 된다.
이 후, start, next, build를 통해 simpleJob을 만들게 된다.
아래에서 jobBuilder, SimpleJobBuilder, start, next, build에 대해서 자세히 살펴보자.
앞서 jobBuilderFactory.get 메서드를 호출하면 jobBuilder를 return 받는다고 하였다.
이 때 말하는 JobBuilder는 보는 것과 같이 JobBuilderHelper를 상속 받고 있다.
start 메서드 인자로 step을 넣고 있기 때문에
SimpleJobBuilder를 return 받게 된다.
start라는 메서드를 조금 더 자세히 살펴보면 SimpleJobBuilder내에는 steps라는 리스트가 존재하는데
steps라는 리스트에 각각의 step을 넣는 형태이다.
next라는 메서드도 동일하게 steps라는 리스트에 step을 차곡차곡 넣게 된다.
build = simpleJob을 만드는 과정이다.
build 메서드 내에는 super.enhance라는 메서드가 있는 것을 볼 수 있다.
super.enhance는 jobBuilderHelper 클래스 내에 있는 enhance 메서드를 의미한다.
이 메서드를 살펴보면 this.properties가 많이 나타나며, 이 객체를 이용해서 job에다가 많은 속성을 넣어주는 코드란 것을 알 수 있다.
이때 말하는 properties는 CommonJobProperites이며 구성(composition)을 상위 클래스를 받아오고 있다.
'강의 > 스프링배치' 카테고리의 다른 글
스프링 배치 실행 - preventRestart() (0) | 2023.01.14 |
---|---|
SimpleJob - 개념 및 API 소개 (validator) (0) | 2023.01.10 |
스프링 배치 실행 - JobBuilderFactory / JobBuilder (0) | 2023.01.09 |
스프링 배치 실행 - 배치 초기화 설정 (0) | 2023.01.04 |
스프링 배치 도메인 이해 - JobLauncher (0) | 2023.01.03 |