#11 spring batch: JobBuilderFactory

This commit is contained in:
haerong22
2022-06-08 01:36:59 +09:00
parent 8cd52ceb20
commit dcedf8cc5d
3 changed files with 107 additions and 2 deletions

View File

@@ -0,0 +1,105 @@
package io.springbatch.basic.job;
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.core.job.builder.FlowBuilder;
import org.springframework.batch.core.job.flow.Flow;
import org.springframework.batch.repeat.RepeatStatus;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@RequiredArgsConstructor
public class JobBuilderFactoryConfiguration {
/*
JobBuilder
- SimpleJobBuilder : SimpleJob 생성
- FlowJobBuilder : FlowJob 생성
*/
private final JobBuilderFactory jobBuilderFactory; // get 메소드를 가지고 JobBuilder 를 생성하는 역할
private final StepBuilderFactory stepBuilderFactory;
@Bean
public Job simpleJob() {
return jobBuilderFactory.get("simpleJob") // 스프링 배치가 Job 을 실행시킬 때 참조하는 Job 이름
.start(step1())
.next(step2())
.build();
}
@Bean
public Job flowJob() {
return jobBuilderFactory.get("flowJob")
.start(flow()) // Flow 전달시 FlowJobBuilder 생성
.next(step5())
.end() // FlowJob 종료시에는 end() 호출
.build();
}
@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");
return RepeatStatus.FINISHED;
})
.build();
}
/*
Flow 생성
*/
@Bean
public Flow flow() {
FlowBuilder<Flow> flowBuilder = new FlowBuilder<>("flow"); // Step 과 비슷한 역할
flowBuilder.start(step3())
.next(step4())
.end();
return flowBuilder.build();
}
@Bean
public Step step3() {
return stepBuilderFactory.get("step3")
.tasklet((contribution, chunkContext) -> {
System.out.println("step3 was executed");
return RepeatStatus.FINISHED;
})
.build();
}
@Bean
public Step step4() {
return stepBuilderFactory.get("step4")
.tasklet((contribution, chunkContext) -> {
System.out.println("step4 was executed");
return RepeatStatus.FINISHED;
})
.build();
}
@Bean
public Step step5() {
return stepBuilderFactory.get("step5")
.tasklet((contribution, chunkContext) -> {
System.out.println("step5 was executed");
return RepeatStatus.FINISHED;
})
.build();
}
}

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 JobConfiguration {

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 JobConfiguration2 {