본문 바로가기

강의/스프링배치

스프링 배치 실행 - preventRestart()

Job을 실행하게 되면 실패 또는 성공을 하게 되는데

 

일반적으로 job이 실패 했을 경우에는 재시작이 가능하고

job이 성공했으면 재시작이 불가능하다.

 

기본 값은 true -> 실패 했을 경우 job 재시작 가능

false로 설정 변경 -> 실패 해도 재시작 불가능

 

job Execution이 없다는 개념은 job을 처음 실행한다는 것이다.

job Execution이 있다는 것은 재시작을 한다는 것이다.

 

사용법은 아래와 같다.

.preventRestart 메서드만 호출하면 되는 것이다.

@RequiredArgsConstructor
@Configuration
public class ExecutionContextConfiguration {
    private final JobBuilderFactory jobBuilderFactory;
    private final StepBuilderFactory stepBuilderFactory;

    private final JobExecutionListener jobRepositoryListener;

    @Bean
    public Job batchJob1() {
        return jobBuilderFactory.get("batchJob1")
                .start(step1())
                .next(step2())
                .validator(new DefaultJobParametersValidator(new String[]{"name","date"}, new String[]{"count"}))
                .preventRestart()
                .listener(jobRepositoryListener)
                .build();
    }
}

 

JobBuilderHelper 클래스에 있는 preventRestart 메서드를 호출하는 것인데

메서드를 호출하게 되면 properties 즉 commonJobProperties의 restartable 의 값을 false로 변경하게 되는 것이다.

기본 commonJobProperties의 restartable의 값은 true이다.