Spring Batch

SpringBatch ChunkSize를 JobParameters 로 사용하기

jaewoo 2022. 12. 19. 16:34

 

JobParameters느 배치를 실행에 필요한 값을 parameter를 통해 외부에서 주입한다.

JobParameters는 외부에서 주입된 Parameter를 관리하는 객체이다.

 

Parameter를 접근하는 방법은 크게 두가지이다. 

JobParameters 객체를 통해 접근

((contribution, chunkContext) -> {
		StepExecution stepExecution = contribution.getStepExecution();
        JobParameters jobParameters = stepExecution.getJobParameters();
        
        String param = jobParameters.getString("chunksize","10");
    }

다른 방법은 @Value를 통한 접근(Value 애노테이션은 롬복이 아닌 Spring 거를 사용해야한다)

 

@Bean
@JobScope
public Step practiceStep(@Value("#{jobParameters[chunkSize]}") String chunkSize){
			return stepBuilderFactory.get("practiceStep")
            .<String,String>chunk(StringUtils.isNotEmpty(chunkSize) ? Integer.parseInt(chunkSize) : 10)
            .reader(this.practiceReader())
                        .processor(this.practiceProcessor())
                        .writer(this.practiceWriter())
                        .build();
        }

 

@Value를 사용할때는 Step Bean에 파라미터로 @Value("#{jobParameters[chunkSize]") 를 사용하면 된다.

 

Intellij에서 파라미터 주는 방법

Program arguments 로 변수를 준 다음 실행하면 된다!

chunkSize가 20으로 잘 나오는 걸 볼 수 있다.

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

Spring Batch - csv 파일 읽기  (0) 2022.12.26
Spring Batch - csv파일 쓰기  (0) 2022.12.23
Spring Batch - JdbcCursorItemReader  (0) 2022.12.22
Spring Batch Chunk 기초학습  (0) 2022.12.19
Spring Batch 동작 순서 (Step)  (0) 2022.12.16