반응형
목차
아래 포스팅에서 이어진 내용입니다.
spring batch simpleFlowJob 예제(조건에 따른 flow처리)
jobTestConfig 🤗
package com.dev.lsy.springbatchremind.batch;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.batch.core.Job;
import org.springframework.batch.core.Step;
import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
import org.springframework.batch.core.launch.support.RunIdIncrementer;
import org.springframework.batch.repeat.RepeatStatus;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Slf4j
@RequiredArgsConstructor
@Configuration
public class JobTestConfig {
private final JobBuilderFactory jobBuilderFactory;
private final StepBuilderFactory stepBuilderFactory;
@Bean
//job
public Job job1() {
return jobBuilderFactory.get("job1")
//jobParameter 자동 증감
.incrementer(new RunIdIncrementer())
.start(step1())
//step1의 상태가 실패로 끝나면
.on("FAILED")
//스텝2로 가라
.to(step2())
//스텝2가 실패면
.on("FAILED")
//flow를 멈춘다.
.stop()
//위에서 정의한 step1의 추가내용을 설정
.from(step1())
//step1이 만일 실패가 아닌 모든 경우(실패는 위에서 정의 했으니 여기서의 *는 실패를 제외한 모든 경우가 된다.)
.on("*")
//스텝3으로 가라
.to(step3())
//그리고 스텝3이 성공하면 스텝 4로 가라
.next(step4())
//스텝2를 재정의하네
.from(step2())
//스텝2가 실패가 아닌 모든 경우의 경우
.on("*")
//스텝5로 가라
.to(step5())
//최종적으로 flow를 종료해라
.end()
.build();
}
@Bean
//step
public Step step1() {
return stepBuilderFactory.get("step1")
.tasklet(((contribution, chunkContext) -> {
// throw new RuntimeException("강제 예외.");
log.info("=======================================");
log.info("여기는 step1입니다.");
log.info("=======================================");
return RepeatStatus.FINISHED;
}))
.build();
}
@Bean
//step
public Step step2() {
return stepBuilderFactory.get("step2")
.tasklet(((contribution, chunkContext) -> {
log.info("=======================================");
log.info("여기는 step2입니다.");
log.info("=======================================");
return RepeatStatus.FINISHED;
}))
.build();
}
@Bean
//step
public Step step3() {
return stepBuilderFactory.get("step3")
.tasklet(((contribution, chunkContext) -> {
log.info("=======================================");
log.info("여기는 step3입니다.");
log.info("=======================================");
return RepeatStatus.FINISHED;
}))
.build();
}
@Bean
//step
public Step step4() {
return stepBuilderFactory.get("step4")
.tasklet(((contribution, chunkContext) -> {
log.info("=======================================");
log.info("여기는 step4입니다.");
log.info("=======================================");
return RepeatStatus.FINISHED;
}))
.build();
}
@Bean
//step
public Step step5() {
return stepBuilderFactory.get("step5")
.tasklet(((contribution, chunkContext) -> {
log.info("=======================================");
log.info("여기는 step5입니다.");
log.info("=======================================");
return RepeatStatus.FINISHED;
}))
.build();
}
}
개인 스터디 기록을 메모하는 공간이라 틀린점이 있을 수 있습니다.
틀린 점 있을 경우 댓글 부탁드립니다.
reference: https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EB%B0%B0%EC%B9%98
다음 내용
반응형
'IT > development' 카테고리의 다른 글
[springBoot] spring batch job/stepExecutionListener (51) | 2023.11.18 |
---|---|
[springBoot] spring batch 사용자 정의 ExitStatus (53) | 2023.11.18 |
[springBoot] spring batch jsonFileItemWriter (55) | 2023.11.18 |
[springBoot] spring batch FlatFileItemWriter (55) | 2023.11.16 |
[springBoot] spring batch step startLimit (54) | 2023.11.16 |