직접적으로 Job 생성을 담당하지 않는다.
start, flow 메소드
를 통해 하위 JobBuilder 를 생성하는 역할을 한다.public class JobBuilder extends JobBuilderHelper<JobBuilder> {
// JobBuilder의 생성자. 여기에 전달하는 name의 Job의 name이 된다.
public JobBuilder(String name) {
super(name);
}
// start 메소드를 오버라이드 한다. Step을 넘길 경우 SimpleJobBuilder 를 반환한다.
public SimpleJobBuilder start(Step step) {
return new SimpleJobBuilder(this).start(step);
}
// start 메소드에 Flow 객체를 넘기면,
// FlowJobBuilder 의 start가 자동으로 호출되면서 JobFlowBuilder 를 반환한다.
public JobFlowBuilder start(Flow flow) {
return new FlowJobBuilder(this).start(flow);
}
// flow 메소드에 Step 객체를 넘기면,
// FlowJobBuilder 의 start 가 자동으로 호출되면서 JobFlowBuilder 를 반환한다.
public JobFlowBuilder flow(Step step) {
return new FlowJobBuilder(this).start(step);
}
}
순차적으로 Step을 실행하는 Job
// jobBuilderFactory 는 Autowired 되어있어야 한다.
@Bean
public Job batchJob() {
return jobBuilderFactory.get(“batchJob") // JobBuilder 를 반환한다.
.start(Step) // 최초에 실행할 Step. SimpleJobBuilder 를 반환한다.
.next(Step) // 이후에 실행할 Step. SimpleJobBuilder 를 반환한다.
.incrementer(JobParametersIncrementer) // jobParameter 를 자동으로 증가시켜준다.
.preventRestart() // 재시작을 방지할지 여부. 기본값은 true이다. 이걸 설정하면 false로 바뀜
.validator(JobParameterValidator) // jobParameter 의 구성이 올바른지 검증하는 Validator
.listener(JobExecutionListener) // Job 의 라이프사이클의 특정 시점에 콜백받기 위한 리스너 설정
.build(); // SimpleJob 반환
}
// jobBuilderFactory 는 Autowired 되어있어야 한다.
@Bean
public Job batchJob() {
return jobBuilderFactory.get(“batchJob")
.start(Step)
.build();
}
특정한 조건에 따라 Step을 실행할지 말지 구성하여 실행시키는 Job
// jobBuilderFactory 는 Autowired 되어있어야 한다.
@Bean
public Job batchJob() {
return jobBuilderFactory.get(“batchJob") // JobBuilder 반환
.start(Flow) // JobFlowBuilder 반환
.on(String pattern) // Transition : 배치 동작의 흐름을 변경하기 위해 사용
.to(Step / Flow / JobExecutionDecider) / stop() / fail() / end() / stopAndRestart(Step / Flow / JobExecutionDecider) // Transition : 배치 동작의 흐름을 변경하기 위해 사용
.from(Step / Flow / JobExecutionDecider) // Transition : 배치 동작의 흐름을 변경하기 위해 사용
.next(Step / Flow / JobExecutionDecider) // 위 from 이 성공했을 때 실행
.end() // FlowBuilder 를 종료하고, SimpleFlow 를 생성. 그리고 SimpleFlow를 래핑한 FlowJobBuilder 를 반환. (build 전에 반드시 필요)
.build() // FlowJob 을 반환한다.
}
FlowJob 을 구성할 때에는 Transition 이 중요하다. 추후에 예제와 함께 자세히 알아보자.
// jobBuilderFactory 는 Autowired 되어있어야 한다.
@Bean
public Job batchJob() {
return jobBuilderFactory.get(“batchJob") // JobBuilder 반환
.flow(Step) // JobFlowBuilder 반환
... // 나머지는 위에 start(Flow) 와 동일하여 별도 작성 안함.
}
// jobBuilderFactory 는 Autowired 되어있어야 한다.
@Bean
public Job batchJob() {
return jobBuilderFactory.get(“batchJob")
.start(Flow)
.end()
.build()
}