#11 spring batch: StepExecution

This commit is contained in:
haerong22
2022-06-03 01:41:51 +09:00
parent b584a5aad5
commit 7ce9a013f2
3 changed files with 71 additions and 2 deletions

View File

@@ -12,7 +12,7 @@ import org.springframework.context.annotation.Configuration;
import java.util.Map;
@Configuration
//@Configuration
@RequiredArgsConstructor
public class JobExecutionConfiguration {

View File

@@ -9,7 +9,7 @@ import org.springframework.batch.repeat.RepeatStatus;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
//@Configuration
@RequiredArgsConstructor
public class StepConfiguration {

View File

@@ -0,0 +1,69 @@
package io.springbatch.basic.step.stepexecution;
import lombok.RequiredArgsConstructor;
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.repeat.RepeatStatus;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@RequiredArgsConstructor
public class StepExecutionConfiguration {
private final JobBuilderFactory jobBuilderFactory;
private final StepBuilderFactory stepBuilderFactory;
@Bean
public Job job() {
return jobBuilderFactory.get("job")
.start(step1())
.next(step2())
.next(step3())
.build();
}
/*
StepExecution
- Step 에 대한 한번의 시도
- Step 실행시 생성(성공, 실패)
- 이전단계 Step 이 실패하면 다음 StepExecution 은 생성되지 않음
- Step 이 실패하면 Job 이 실패
- Job 을 재실행하면 실패한 Step 만 실행
- BATCH_STEP_EXECUTION 테이블과 매핑
- JobExecution : StepExecution = 1:N
*/
@Bean
public Step step1() {
return stepBuilderFactory.get("step1")
.tasklet((contribution, chunkContext) -> {
System.out.println("step1 was executed");
return RepeatStatus.FINISHED;
})
.build();
}
@Bean
public Step step2() {
return stepBuilderFactory.get("step2")
.tasklet((contribution, chunkContext) -> {
System.out.println("step2 was executed");
// throw new RuntimeException("step2 has failed");
return RepeatStatus.FINISHED;
})
.build();
}
@Bean
public Step step3() {
return stepBuilderFactory.get("step3")
.tasklet((contribution, chunkContext) -> {
System.out.println("step3 was executed");
return RepeatStatus.FINISHED;
})
.build();
}
}