package com.system.batch;
@Slf4j
@Component
@StepScope
public class DatePrintTasklet implements Tasklet {
private final String requestDate;
public DatePrintTasklet(@Value("#{jobParameters['requestDate']}") String requestDate){
this.requestDate = requestDate;
}
@Override
public @Nullable RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
log.info("외부에서 받은 날짜: {}", requestDate);
log.info("이제 {} 날짜의 데이터를 처리합니다!", requestDate);
return RepeatStatus.FINISHED;
}
}
👩💼
주의할 점
JobParameters 뒤에 대괄호 [’키값’] 작성시, 홑따옴표를 꼭 붙여주세요!
(O) #{jobParameters['requestDate']}
(X) #{jobParameters[requestDate]} (에러 발생!)
✅ 2. Step과 Job 등록하기
package com.system.batch;
@RequiredArgsConstructor
@Configuration
public class DatePrintJobConfig {
private final JobRepository jobRepository;
private final PlatformTransactionManager transactionManager;
private final DatePrintTasklet datePrintTasklet;
@Bean
public Job datePrintJob(){
return new JobBuilder("datePrintJob", jobRepository)
.start(datePrintStep())
.build();
}
@Bean
public Step datePrintStep(){
return new StepBuilder("datePrintStep", jobRepository)
.tasklet(datePrintTasklet, transactionManager)
.build();
}
}
✅ 3. 배치 실행하기
# 각 운영체제에 맞는 명령문으로 배치 실행
./gradlew bootRun --args='--spring.batch.job.name=datePrintJob requestDate=20240126'