• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

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

23.02.19 12:09 작성 조회수 559

1

앞선 질문 보고 다음과 같이 추가를 한 상황인데 Hello World Spring Batch 구문이 실행이 되지 않아 질문을 드립니다..!

혹시 제가 잘못 설정한 부분이 있는 걸까요?

답변 2

·

답변을 작성해보세요.

0

Tommy님의 프로필

Tommy

질문자

2023.02.21

아 제가 깜빡하고 git 주소를 안남겨 놓았네요..!

https://github.com/BeomSeogKim/BackendStudy/tree/main/SpringBatch

입니다.

스프링 시작점에 @EnableBatchProcessing 어노테이션 등록은 한 상태입니다!

한번 확인 부탁드릴게요 감사합니다.

Tommy님 안녕하세요 :)
알려주신 소스 코드를 제 로컬에서 실행을 해보니 정상적으로 동작을 하여, 코드에는 문제가 없는 것 같아요!!
이 2라인[0]을 주석 처리하고 hello world가 보이는지 확인을 해주실 수 있을까요?
2라인 코드를 주석처리를 하시면 인자 없이 job에 등록된 배치 작업이 실행이 될텐데요. 잡이 정상적으로 실행이 되는지 확인을 해볼게요.
job에 정상적으로 등록이 되었다면, 알려주신 코드 기반으로 argument를 위에 처럼 넘겨 주시면 정상적으로 동작을 해야 되겠습니다😢
혹시, 저때 실행을 할 때와 위에서 알려주신 소스코드가 다를 수도 있을까요?

[0]
https://github.com/BeomSeogKim/BackendStudy/blob/main/SpringBatch/src/main/resources/application.yml#L3-L4

 

Tommy님의 프로필

Tommy

질문자

2023.02.22

yaml 파일에서 주석처리 되지 않은 것이 문제였군요

해결했습니다.

감사합니다 선생님!

저 부분의 주석처리가 되어 있다면, (인자와 상관 없이) 등록된 job이 모두 실행이 돼요.
하지만 해당 job만 실행을 시키기 위해서는 위에 yaml에 코드가 포함이 되어 있어야 해요. 이때 job 이름을 인자로 넘겨주면서 해당 job만 실행이 되겠습니다.
주석처리가 되어 있는 상태에서 실행이 된다면 job은 잘 등록이 되어 있고, 해당 코드도 제가 실행 했을 때 정상적으로 동작함을 봤을 때, 해당 job 인자가 정상적으로 넘어가지 않는 것으로 생각이 됩니다 ㅠ.ㅠ

Tommy님의 프로필

Tommy

질문자

2023.03.05

안녕하세요 선생님

그동안 다른일로 바빠 이제야 다시 도전해보고 있습니다..!

Run/Debug configuration은 다음과 같이 설정을 해두었습니다.

image추가적으로

yaml 설정에서

job:names에 ${job.name:helloWorldJob} 을 넣었을 땐 정상적으로 Hello World가 출력되며

job:names에 ${job.name:NONE} 을 넣었을 땐 출력이 되지 않네요..!

 


추가적으로 뒤에 validator때에도 fileName이 잘 적용되질 않는 것 같아서

jar file을 build한 후

java -jar {Spring jar 파일} --spring.batch.job.names=helloWorldJob 으로 실행을 해도 무방할까요?

Tommy님 안녕하세요 :)
인텔리제이 버전까지는 동일하지 않아서 혹시 옵션 입력을 해주신 칸이 Program Arguments 칸이 맞겠지요?
해볼 수 있는 2가지를 시도해볼게요.

  1. 옵션을 --job.name=helloWorldJob으로 변경을 해서 시도를 해주실 수 있으실까요?

  2. 다른 하나는 명령어로 직접 수행을 해볼게요. (인텔리제이에서 인자를 제대로 못받고 있는 것으로 판단이 돼요.)

    1. 화면의 오른쪽 상단 Gradle 클릭 -> Tasks -> build -> jar 클릭하여 jar 직접 생성

    2. 디렉토리 build/libs 위치에 Batch-0.0.1-SNAPSHOT.jar 파일 확인 및 해당 위치로 이동

    3. java -jar Batch-0.0.1-SNAPSHOT.jar --spring.batch.job.names=helloWorldJob
      명령어 직접 수행

제 환경에서는 제대로 동작을 하고 있어, 인텔리제이에서 인자를 제대로 못 받고 있는 것으로 생각이 돼요. 위에 2가지에 대해서 시도를 해볼 수 있겠습니다.
감사합니다.

Tommy님의 프로필

Tommy

질문자

2023.03.05

image혹시 여기서 실행을 할때

Recent Configurations 목록들에서

{1} spring.batch.SpringBatchApplication

{2} SpringBatchApplication

{2] 가 아닌 {1}을 실행하면 되는 것일까요?

test를 해본결과 {1} 을 실행 했을 때에는 정상 작동하는 것을 확인했습니다.

주말인데 빠른 답변 진심으로 감사드립니다.

화면을 봤을 때는 1번은 어플리케이션을 실행하고, 2번은 스프링 부트를 실행하는 모습인 것 같아요. 툴에서 어플리케이션을 시작하는 시작점이 다른 것 같습니다.
문제가 해결되어 다행입니다😀
시원스럽게 답변을 드리지 못한 점 죄송하며, 혹시나 문제가 또 발생을 한다면 같이 고민을 하도록 하겠습니다 :)

0

Tommy 님 안녕하세요 :)
Github를 통해서 코드를 직접볼 수 있으면 조금 더 정확하게 확인이 가능할텐데요ㅠ.ㅠ
짐작으로는 스프링 시작점의 @EnableBatchProcessing 어노테이션도 추가를 해주셨을까요?
시작점 코드는 아래 링크[0]에서 확인을 하실 수 있어요.

[0]
https://github.com/junngo/spring-batch-tutorial/commit/3a4a1e85ad17e87acb56e5037bf1cdfe31920987#diff-2fe19cf8ea603a3c547a795ec1ee397bd3f4d48c91e04ccf288e5114171919b1R7