inflearn logo
강의

Khóa học

Chia sẻ kiến thức

[Giới thiệu về Spring Batch] Những kiến ​​thức cốt lõi của Spring Batch thông qua các ví dụ

Nhận tham số (tên file) và xác minh (csv) khi chạy batch

질문입니다.

108

skyjoon2

48 câu hỏi đã được viết

0

Program Arguments가 없어서 VM options에

-Dspring.batch.job.names=helloWorldJob

이와같이 설정하여 실행하였고 test파일의 경우 -Dspring.batch.job.names=helloWorldJob -DfileName=test.csv

 

이렇게 설정하였는데

fileName의 경우 null이 나오는데

 

현재 저의 코드는 package com.example.SpringBatchTutorial.job.ValidatedParam; import lombok.RequiredArgsConstructor; import org.junit.Test; import org.springframework.batch.core.*; 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.JobLauncher; 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.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /* desc : 파일 이름 파라미터 전달 그리고 검증 run : --spring.batch.job.names=helloWorldJob - fileName=test.csv * */ @Configuration @RequiredArgsConstructor public class ValidatorParamJobConfig { @Autowired private JobBuilderFactory jobBuilderFactory; @Autowired private StepBuilderFactory stepBuilderFactory; @Autowired private JobLauncher jobLauncher; @Autowired private Job validatedParamJob; @Test public void testJob() throws Exception { // JobParameters에 fileName을 명시적으로 추가 JobParameters jobParameters = new JobParametersBuilder() .addString("fileName", "test.csv") // fileName 전달 .toJobParameters(); // Job 실행 jobLauncher.run(validatedParamJob, jobParameters); } @Bean public Job ValidatedParamJob(Step ValidatedParamStep){ return jobBuilderFactory.get("ValidatedParamJob") .incrementer(new RunIdIncrementer()) .start(ValidatedParamStep) .build(); } @JobScope @Bean public Step ValidatedParamStep(Tasklet ValidatedParamTasklet){ return stepBuilderFactory.get("ValidatedParamStep") .tasklet(ValidatedParamTasklet) .build(); } @Bean @StepScope public Tasklet ValidatedParamTasklet(@Value("#{jobParameters['fileName']}") String fileName){ return new Tasklet() { @Override public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception { System.out.println(fileName); System.out.println("Validated Param Tasklet"); return RepeatStatus.FINISHED; } }; } }이렇게 되어있습니다.

spring-batch

Câu trả lời 1

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. skyjoon2님. 질문해주신 내용을 살펴보니 파라미터 전달 방식에서 발생하는 문제 같습니다. @Value("#{jobParameters['fileName']}")를 통해 파라미터를 전달하고 있지만, 전달되지 않은 이유는 여러 가지가 있을 수 있습니다. 이와 관련하여 몇 가지 자료를 참고하시면 문제 해결에 도움이 될 것입니다.

  1. 프로그램 인자와 VM 인자 차이: -Dspring.batch.job.names=helloWorldJob은 VM 옵션으로 설정되어 있어 job 이름은 잘 전달되지만, 일반적으로 --spring.batch.job.names=helloWorldJob 와 같이 프로그램 인자로 전달해야 하는 경우도 있습니다. 이 부분을 먼저 확인해주세요.

  2. 파일 이름 파라미터 설정: -DfileName=test.csv와 같이 VM 옵션에 설정했지만, 배치 잡에서는 VM 옵션 대신 스트링 인자 형식으로 받는 것이 일반적입니다. Program Arguments 부분에 --spring.batch.job.names=helloWorldJob --fileName=test.csv 형식으로 전달을 시도해 보세요.

  3. 관련 질문 링크:

  4. 추가적 코드 확인 및 설정 확인: @Test 메소드에서의 수행이므로, 일반적으로 IDE에서 테스트 수행 시에는 환경 인자를 정확히 설정했는지 확인하는 것이 중요합니다. 보통 테스트를 수행할 때 jobParameters를 명시적으로 전달하는 것이 좋습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

배치 실행시 파라미터 (파일 이름)받기 및 (csv) 검증 5.0버전 공유

1

50

1

질문x 1강 일단 실행 코드부분 5.0에 맞춰 수정

1

38

1

spring batch 5.x 버전 설정

1

141

2

Spring Batch 5버전의 경우 실행법 공유

0

166

1

소스 다운 받을 수 없는건가요?

0

120

1

학습에 사용하는 문서 자료 같은 건 없나요?

0

123

1

spring batch 5버전 소스는 없나요

0

438

1

질문드립니다.

0

340

1

@Configuration 어노테이션 관련 질문있습니다.

0

277

1

다중 Job 구동시 질문 있습니다!!

0

318

1

설정 관련 문의

1

303

1

다중DB 접속 설정 에러

0

959

1

조건별 분기 처리시 질문있습니다

0

353

1

Spring Batch 테이블이 생성되질 않습니다!!!!!

0

1708

2

db이관시 sql 스크립트 데이터 복붙하라고 하시는데 파일은 어디에 있나요 ?

0

493

1

Spring Batch5로 강의내용 최신화 업데이트될 가능성이 있을까요?

0

873

1

reader, writer, processor에서 적용

0

492

1

똑같이 실행하는데 출력이 안돼요

0

1023

2

스케줄러에서 Job을 구분하지 못합니다.

0

609

1

빌드가 실패해요 ㅠㅠ

1

3209

1

Chunk size에 대해

0

3178

1

Run / Debug 관련 질문드립니다..!

1

916

2

완강했습니다! 마지막 질문 드리고 싶습니다.

0

424

1

여러개의 step 구동 질문

0

398

1