관리 메뉴

IT.FARMER

Spring Batch JobParameter 본문

Spring/Spring Batch

Spring Batch JobParameter

아이티.파머 2020. 5. 26. 17:18
반응형

2020/05/26 - [Spring/Spring Batch] - Spring Batch 특징

2020/05/26 - [Spring/Spring Batch] - Spring batch 기본 흐름 (tasklet, next flow)

2020/05/26 - [Spring/Spring Batch] - Spring Batch 분기/decide

2020/05/26 - [Spring/Spring Batch] - Spring Batch JobParameter

2020/05/26 - [Spring/Spring Batch] - Spring Batch chunk 지향 방식

JobParameter

Batch를 실행함에 있어 파라미터를 넘겨주어 운영시 언제든지 데이터를 처리 해야 하는경우가 있다. 이때 JobParmeter를 사용 하도록 하며 @StepScope / @JobScope 에대해 간략하게 알아보자

  • @JobScope : Step 선언문에서 사용 가능 함.
  • @StepScope : Tasklet 이나, ItemReader,ItemWriter,ItemProcess 에서만 사용가능

 

예제 - Chunk 기반 @StepScope (ItemReader,ItemWriter,ItemProcess,Tasklet)

**
* JOB Process - 1. READER
* @param pathToFile
* @return
* @throws Exception
*/
@Bean
@StepScope
public AudienceItemReader audienceItemReader(@Value("#{jobParameters[pathToFile]}") String pathToFile,
                                           @Value("#{jobParameters[fileName]}") String fileName) throws Exception {
  return new AudienceItemReader(pathToFile, FILE_PATH, fileName);
}

/**
 * JOB  생성
 * @param listener
 * @param audienceStep1
 * @return
 */
@Bean
public Job importAudienceJob(AudienceJobCompletionNotificationListener listener, @Qualifier("audienceStep1") Step audienceStep1) {
    return jobBuilderFactory.get("importAudienceJob")
            .incrementer(new RunIdIncrementer())
            .listener(listener)
            .flow(audienceStep1)
            .end()
            .build();
    }

/**
 * 스탭 생성
 * @param writer2
 * @param audienceRepository
 * @return
 * @throws Exception
 */
@Bean
public Step audienceStep1(AudienceItemWriter writer2, @Qualifier("audienceRepository") AudienceRepository audienceRepository) throws Exception {
    return stepBuilderFactory.get("audienceStep1")
            .<AudienceFile, RedisDataEntity>chunk(AudienceConst.BUFFER_SIZE)
            .reader(audienceItemReader(null,null))
            .processor(audienceItemProcessor())
            .writer(audienceItemWriter(audienceRepository))
            .build();
}

 

 

반응형

'Spring > Spring Batch' 카테고리의 다른 글

Spring Batch chunk 지향 방식  (0) 2020.05.26
Spring Batch 분기/decide  (0) 2020.05.26
Spring batch 기본 흐름 (tasklet, next flow)  (0) 2020.05.26
Spring Batch 특징  (0) 2020.05.26