반응형
스프링 배치의 실행 - Job
JobBuilderFactory
@Bean
public Job job2() {
return jobBuilderFactory.get("job2")
.start(step1())
.build();
}
- JobBuilder를 생성하는 팩토리 클래스로서
get(String name)
메서드를 제공한다. - 위와 같이 get 메서드의 인자에 들어가는 String 값이 Job의 이름이 된다.
JobBuilder
@Bean
public Flow flow() {
FlowBuilder<Flow> flowBuilder = new FlowBuilder<>("flow");
flowBuilder
.start(step3())
.next(step4())
.end();
return flowBuilder.build();
}
- Job을 구성하는 설정 조건에 따라 두개의 하위 빌더 클래스를 생성하고 실제 Job 생성을 위임한다.
SimpleJobBuilder
- SimpleJob을 생성하는 Builder 클래스이다.
- Job 실행과 관련된 여러 설정 API를 제공한다.
FlowJobBuilder
- FlowJob을 생성하는 Builder 클래스이다.
- 내부적으로 FlowBuilder를 반환하여 Flow 실행과 관련된 여러 설정 API를 제공한다.
SimpleJob
- SimpleJob은 Step을 실행시키는 Job 구현체로서 SimpleJobBuilder에 의해 생성된다.
- 여러 단계의 Step을 구성할 수 있으면 Step을 순차적으로 실행시킨다.
- 모든 Step의 시랳ㅇ이 성공적으로 완료되어야 Job이 성공적으로 완료된다.
- 맨 마지막에 실행한 Step의 BatchStatus가 Job의 최종 BatchStatus가 된다.
SimpleJob API
@Bean
public Job job1() {
return jobBuilderFactory.get("job1")
.start(step1())
.next(step2())
.next(step3())
.incrementer(new RunIdIncrementer())
.validator(new JobParametersValidator() {
@Override
public void validate(JobParameters parameters) throws JobParametersInvalidException {
}
})
.preventRestart()
.listener(new JobExecutionListener() {
@Override
public void beforeJob(JobExecution jobExecution) {
}
@Override
public void afterJob(JobExecution jobExecution) {
}
})
.build();
}
get(String)
: Job을 생성한다.start(Step)
: Job에서 처음 실행할 Step을 설정한다.- 최초에 한번 설정하면 SimpleJobBuilder이 반환된다.
next(Step)
: 다음에 실행 할 Step을 설정한다.- 횟수제한 X, 모든 next()의 Step이 종료되면 Job이 종료된다.
incrementer(JobParametersIncrementer)
: JobParameter의 값을 자동으로 증가해주는JobParametersIncrementer
을 설정한다.- JobParameters에서 필요한 값을 증가시켜 다음에 사용될 JobParameters 오브젝트를 리턴한다.
- 기존의 JobParameter 변경없이 Job을 여러 번 시작하고자 할 때 사용한다.
RunIdIncrementer
구현체를 지원하고, 필요에 따라 인터페이스를 직접 구현할 수 있다.
preventRestart(Boolean)
: Job의 재시작 가능 여부를 설정한다. 기본값 true- false는 재시작을 지원하지 않는다는 의미이다.
- Job이 실패해도 재시작이 안되며 Job을 재시작하려고 하면
JobRestartException
이 발생한다. - 재시작과 관련있는 기능으로 Job을 처음 실행하는 것과는 아무 상관이 없다.
validator(JobParameterValidator)
: JobParameter을 실행하기 전에 올바른 구성이 되었는지 검증하는 JobParametersValidator을 설정한다.- Job 실행에 필요한 파라미터를 검증하는 용도로 사용한다.
DefaultJobParametersValidator
구현체를 지원하고, 필요에 따라 직접 인터페이스를 구현할 수 있다
listener(JobExecutionListner)
: Job 라이프 사이클의 특정 시점에 콜백 제공도록 설정한다.build()
: SimpleJob을 생성한다.
반응형
'Java & Kotlin > Spring Batch' 카테고리의 다른 글
[Spring Batch] @JobScope와 @StepScope (0) | 2022.05.28 |
---|---|
[Spring Batch] 스프링 배치 실행 - Flow (0) | 2022.05.28 |
[Spring Batch] 스프링 배치 실행 - Step (0) | 2022.05.28 |
[Spring Batch] 스프링 배치 도메인 - Step, 나머지 (0) | 2022.05.28 |
[Spring Batch] 스프링 배치 도메인 - Job (0) | 2022.05.28 |
[Spring Batch] 스프링 배치의 DB 스키마 (0) | 2022.05.18 |