질문입니다.
108
작성한 질문수 48
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; } }; } }이렇게 되어있습니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. skyjoon2님. 질문해주신 내용을 살펴보니 파라미터 전달 방식에서 발생하는 문제 같습니다. @Value("#{jobParameters['fileName']}")를 통해 파라미터를 전달하고 있지만, 전달되지 않은 이유는 여러 가지가 있을 수 있습니다. 이와 관련하여 몇 가지 자료를 참고하시면 문제 해결에 도움이 될 것입니다.
프로그램 인자와 VM 인자 차이:
-Dspring.batch.job.names=helloWorldJob은 VM 옵션으로 설정되어 있어 job 이름은 잘 전달되지만, 일반적으로--spring.batch.job.names=helloWorldJob와 같이 프로그램 인자로 전달해야 하는 경우도 있습니다. 이 부분을 먼저 확인해주세요.파일 이름 파라미터 설정:
-DfileName=test.csv와 같이 VM 옵션에 설정했지만, 배치 잡에서는 VM 옵션 대신 스트링 인자 형식으로 받는 것이 일반적입니다. Program Arguments 부분에--spring.batch.job.names=helloWorldJob --fileName=test.csv형식으로 전달을 시도해 보세요.관련 질문 링크:
- 잡 이름이 겹치지 않는데 왜 이럴까요…?: 잡 이름 및 파라미터 전달과 관련하여 유사한 문제를 다룬 질문입니다.
- Run / Debug 관련 질문드립니다..!: 파라미터 전달 문제가 발생했을 때 해결 방법에 대한 토론입니다.
- 잡 이름이 겹치지 않는데 왜 이럴까요…?: 잡 이름 및 파라미터 전달과 관련하여 유사한 문제를 다룬 질문입니다.
추가적 코드 확인 및 설정 확인:
@Test메소드에서의 수행이므로, 일반적으로 IDE에서 테스트 수행 시에는 환경 인자를 정확히 설정했는지 확인하는 것이 중요합니다. 보통 테스트를 수행할 때 jobParameters를 명시적으로 전달하는 것이 좋습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
배치 실행시 파라미터 (파일 이름)받기 및 (csv) 검증 5.0버전 공유
1
48
1
질문x 1강 일단 실행 코드부분 5.0에 맞춰 수정
1
37
1
spring batch 5.x 버전 설정
1
141
2
Spring Batch 5버전의 경우 실행법 공유
0
165
1
소스 다운 받을 수 없는건가요?
0
119
1
학습에 사용하는 문서 자료 같은 건 없나요?
0
121
1
spring batch 5버전 소스는 없나요
0
436
1
질문드립니다.
0
340
1
@Configuration 어노테이션 관련 질문있습니다.
0
277
1
다중 Job 구동시 질문 있습니다!!
0
317
1
설정 관련 문의
1
303
1
다중DB 접속 설정 에러
0
958
1
조건별 분기 처리시 질문있습니다
0
352
1
Spring Batch 테이블이 생성되질 않습니다!!!!!
0
1708
2
db이관시 sql 스크립트 데이터 복붙하라고 하시는데 파일은 어디에 있나요 ?
0
492
1
Spring Batch5로 강의내용 최신화 업데이트될 가능성이 있을까요?
0
873
1
reader, writer, processor에서 적용
0
490
1
똑같이 실행하는데 출력이 안돼요
0
1023
2
스케줄러에서 Job을 구분하지 못합니다.
0
608
1
빌드가 실패해요 ㅠㅠ
1
3207
1
Chunk size에 대해
0
3176
1
Run / Debug 관련 질문드립니다..!
1
913
2
완강했습니다! 마지막 질문 드리고 싶습니다.
0
420
1
여러개의 step 구동 질문
0
398
1





