package com.example.SpringBatchTutorial.ValidatedParam;
import lombok.RequiredArgsConstructor;
import org.springframework.batch.core.Job;
import org.springframework.batch.core.Step;
import org.springframework.batch.core.StepContribution;
import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
import org.springframework.batch.core.configuration.annotation.JobScope;
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
import org.springframework.batch.core.configuration.annotation.StepScope;
import org.springframework.batch.core.launch.support.RunIdIncrementer;
import org.springframework.batch.core.scope.context.ChunkContext;
import org.springframework.batch.core.step.tasklet.Tasklet;
import org.springframework.batch.repeat.RepeatStatus;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
*
* desc : Hello World 출력
* run : --spring.batch.job.names=ValidatedParamJob
*/
@Configuration
@RequiredArgsConstructor
public class ValidatedParamJobConfig {
@Autowired
private JobBuilderFactory jobBuilderFactory;
@Autowired
private StepBuilderFactory stepBuilderFactory;
@Bean
public Job ValidatedParamJob(Step ValidatedParamStep) { //job 생성
return jobBuilderFactory.get("ValidatedParamJob")//이름을 정해주는 코드
.incrementer(new RunIdIncrementer())//아이디 부여시 시퀀스를 순차적으로 부여할 수 있도록 명시
.start(ValidatedParamStep)
.build();
}
@JobScope
@Bean
public Step ValidatedParamStep(Tasklet ValidatedParamTasklet) {
return stepBuilderFactory.get("ValidatedParamStep")
.tasklet(ValidatedParamTasklet) // step안에는 itemreader, processer, writer가 있는데, 읽고 쓰기를 하지 않는 단순한 배치를 만들 때 사용
.build();
}
@StepScope
@Bean
public Tasklet ValidatedParamTasklet() {
return new Tasklet() {
@Override
public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
System.out.println("validated Param Tasklet");
return RepeatStatus.FINISHED;
}
};
}
}
이번에는 빈을 주입받아서 job을 실행해보았다.
함수를 호출하는 것이 아니라 파라미터로 각각 ValidatedParamStep, ValidatedParamTasklet을 받아서 호출한다.
결과적으로
'스프링 스터디 (인프런) > 스프링 배치 입문' 카테고리의 다른 글
2. 스프링 배치의 구조 (0) | 2022.12.10 |
---|---|
1. 배치 작업이란? 배치작업이 필요한 이유 (0) | 2022.12.08 |