작성
·
57
0
잡 파라미터 넣는것으로는 실행아 안되고요
runJob 메소드 만들어서 실행해야합니다.
코드 공유
public class SpringBatchTutorialApplication {
@Autowired
private JobLauncher jobLauncher;
@Autowired
private Job helloWorldJob;
@Autowired
private JobRegistry jobRegistry;
public static void main(String args[]) {
SpringApplication.run(SpringBatchTutorialApplication.class, args);
SpringApplication application = new SpringApplication(SpringBatchTutorialApplication.class);
application.run(args).getBean(SpringBatchTutorialApplication.class).runJob(args);
//System.out.println(args[0]);
}
public void runJob(String args[]) {
try {
String jobName = getJobNameFromArgs(args);
System.out.println(jobName);
Job job = jobRegistry.getJob(jobName);
JobExecution jobExecution = jobLauncher.run(job, new JobParameters());
System.out.println("Job Execution Status: " + jobExecution.getStatus());
} catch (Exception e) {
e.printStackTrace();
}
}
private String getJobNameFromArgs(String args[]) {
for (String arg : args) {
if (arg.startsWith("JobName=")) {
return arg.substring("JobName=".length());
}
}
return null;
}
}
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. 원동명님. Spring Batch 5버전의 실행 방법에 관한 질문 주셨네요.
질문에서 제공해주신 코드는 Spring Batch를 실행하기 위한 커스텀 메소드 runJob
을 사용하여 특정 잡을 실행하는 방법을 보여주고 있습니다. 아래에 간단히 핵심 내용을 설명드릴게요:
JobLauncher를 통한 잡 실행: jobLauncher.run(job, new JobParameters())
를 통해 잡을 실행합니다. 이때 JobParameters
를 사용하여 잡의 파라미터를 설정할 수 있습니다.
메인 메소드에서 잡 실행: SpringApplication
을 통해 애플리케이션을 실행한 뒤, 특정 잡을 실행하기 위해 runJob
메소드를 호출합니다. 이 메소드에서 전달받은 파라미터에서 잡 이름을 추출하여 해당 잡을 실행합니다.
잡 이름 추출 및 실행: getJobNameFromArgs
메소드는 전달된 인자 중 “JobName=“으로 시작하는 값을 찾아 잡 이름을 결정합니다.
이 방법을 통해 다양한 잡을 매번 다른 파라미터로 손쉽게 실행할 수 있습니다. 코드가 잘 동작하지 않는다면, @Autowired
로 주입되는 빈들이 실제로 등록되어 있는지, JobRegistry
에 잡들이 잘 등록되어 있는지도 확인해보시면 좋겠습니다.
똑같이 실행하는데 출력이 안돼요: 이 질문에서는 특정 배치 잡 실행 중 출력이 되지 않는 문제를 다룹니다. 이와 비슷한 문제를 경험하신다면 참고가 될 수 있습니다.
잡 이름이 겹치지 않는데 왜 이럴까요…?: 동일 잡명이 여러 번 등록되어 겹치는 문제에 대한 분석과 해결 방안을 제공합니다.
스케줄러에서 Job을 구분하지 못합니다.: 여러 잡 중 특정한 잡을 어떻게 실행하는지에 대한 또 다른 사용자 경험입니다.
위의 링크들은 다양한 Spring Batch 관련 문제 해결에 도움이 될 수 있는 사례들입니다. 추가적인 문제가 발생할 경우, 해당 사례들을 참고하시면 좋을 것 같습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.