작성
·
114
1
./gradlew bootRun --args='--spring.batch.job.name=systemTerminationSimulationJob'
위에 코드로 터미널에서 실행하는데 System.out.println로 출력해둔 건 나오지않고 스프링부트 로그만 뜨고 끝나버리더군요
AI에게 물어봤더니 그럴경우 강제적으로 하는방법이 있다고해서 ApplicationRunner를 주입시켜서 해봤는데 또 잘나옵니다. ApplicationRunner를 계속 둘수도 없는거라 ApplicationRunner없이 안나오는경우에는 어떠한 설정문제일까요? 일단 AI가 해보라는데로 다해봤지만 실패했습니다.
답변 2
1
직접 재현해보니 정상적으로 출력된다.
정확한 정보가 필요하구나
1) build.gradle 파일 내용
2) KillBatchSystemApplication 클래스
3) Job 이름 설정
ps. ApplicationRunner 주입따위 필요없다. 뭔가 설정이 꼬인 것 같으니 위 정보를 전달해달라
application.yml
spring:
batch:
job:
enabled: true
name: systemTerminationSimulationJob
main:
web-application-type: none
logging:
level:
org.springframework.batch: INFO
실행결과
Starting a Gradle Daemon (subsequent builds will be faster)
> Task :bootRun
. ____ _ __ _ _
/\\ / ___'_ __ _ ()_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v3.4.7)
2025-08-10T18:15:26.056+09:00 INFO 200768 --- [ main] c.s.b.k.KillBatchSystemApplication : Starting KillBatchSystemApplication using Java 17.0.16 with PID 200768 (C:\Users\XXX\IdeaProjects\kill-batch-system\build\classes\java\main started by XXXin C:\Users\XXX\IdeaProjects\kill-batch-system)
2025-08-10T18:15:26.056+09:00 INFO 200768 --- [ main] c.s.b.k.KillBatchSystemApplication : No active profile set, falling back to 1 default profile: "default"
2025-08-10T18:15:26.487+09:00 INFO 200768 --- [ main] o.s.j.d.e.EmbeddedDatabaseFactory : Starting embedded database: url='jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=false', username='sa'
2025-08-10T18:15:26.833+09:00 INFO 200768 --- [ main] c.s.b.k.KillBatchSystemApplication : Started KillBatchSystemApplication in 1.114 seconds (process running for 2.314)
2025-08-10T18:15:26.833+09:00 INFO 200768 --- [ main] o.s.j.d.e.EmbeddedDatabaseFactory : Shutting down embedded database: url='jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=false'
BUILD SUCCESSFUL in 8s
4 actionable tasks: 3 executed, 1 up-to-date
이상입니다
현재 너와 동일 build.gradle / property 구성으로도 정상 실행되는것이 확인된다
0장 강의에서 다룬 코드 외에 다른 코드들이 침투해있는 것 같다 나머지 코드들도 전부 부탁한다 스프링부트 자동 구성을 누군가가 헤치고있는것으로 파악된다 예를들어 DefaultBatchConfiguration 을 상속한코드가있다거나
spring batch를 부트가 인식 못하는것으로보인다
1) 전체 프로젝트 구성과 작성한 모든 클래스코드를 전달해달라
2) Gradle 의존성이 제대로 로드되고 있는지 확인해보자.
./gradlew dependencies --configuration compileClasspath | grep -A 5 -B 5 batch
./gradlew dependencies --configuration runtimeClasspath | grep -A 5 -B 5 batch
Gradle 의존성체크 입니다 문제가없어보여요 뭐이런경우가....
compileClasspath - Compile classpath for source set 'main'.
\--- org.springframework.boot:spring-boot-starter-batch -> 3.5.4
+--- org.springframework.boot:spring-boot-starter:3.5.4
| +--- org.springframework.boot:spring-boot:3.5.4
| | +--- org.springframework:spring-core:6.2.9
| | | \--- org.springframework:spring-jcl:6.2.9
| | \--- org.springframework:spring-context:6.2.9
--
| +--- org.springframework:spring-beans:6.2.9 (*)
| +--- org.springframework:spring-core:6.2.9 (*)
| \--- org.springframework:spring-tx:6.2.9
| +--- org.springframework:spring-beans:6.2.9 (*)
| \--- org.springframework:spring-core:6.2.9 (*)
\--- org.springframework.batch:spring-batch-core:5.2.2
+--- org.springframework.batch:spring-batch-infrastructure:5.2.2
| +--- org.springframework:spring-core:6.2.4 -> 6.2.9 (*)
| \--- org.springframework.retry:spring-retry:2.0.11 -> 2.0.12
+--- org.springframework:spring-aop:6.2.4 -> 6.2.9 (*)
+--- org.springframework:spring-beans:6.2.4 -> 6.2.9 (*)
+--- org.springframework:spring-context:6.2.4 -> 6.2.9 (*)
전체코드가 필요하다
총 몇개 클래스가있는가 정상적으로 구성했다면 위에 말한
SystemTerminationConfig와 KillBatchSystemApplication만 있어야 정상이다 다른 클래스는 작성하지 않았나?
좋다 내가 질문을 너무 돌려서했다 BatchConfig extends DefaultBatchConfiguration 이 코드가 분명 존재할것같았다
다행이다 얼른 1장으로 넘어가라 0장에서 너무 오랜시간을 지체했다
덕분에 나도 퇴근이다
화이팅이다 강의 끝까지 포기말고 따라가주길 바란다 💀💀
(새벽 피로감 이슈로 킬구 컨셉을 제대로 구현못했다 이해바란다ㅋㅋ)
응원한다 현재 spring boot3.5를 사용하는것으로보인다 그럴 경우 (아주 사소한 변경에 불과하지만) 5장에서 소개하는 일부 코드와 살짝 차이가있을것이다 이를 참고하도록하라
(그리고 우리 강의의 규칙은 형과 반말이다 참고하라 💀)
0
안녕하세요, 인프런 AI 인턴입니다.
ultimates님이 겪고 계신 문제는 Spring Boot 애플리케이션에서 배치 작업이나 명령어 실행과 관련된 로그 출력 문제인 것 같습니다. 해당 현상은 보통 Spring Boot의 실행 방식에 관련되어 있으며, 서버 측에서나 로컬 환경에서의 차이로 인해 발생할 수 있습니다.
./gradlew bootRun --args='--spring.batch.job.name=systemTerminationSimulationJob'
명령어를 통해 애플리케이션을 실행할 때 표준 출력(System.out.println)이 제대로 보이지 않는다고 하셨습니다.로그 설정 확인
DEBUG
로 설정하면 좀 더 많은 정보를 출력을 받을 수 있습니다.환경 변수 및 Gradle 설정 확인
TERM
관련 설정이 있어 변화가 생길 수 있습니다.Spring Boot 애플리케이션 실행 옵션 조정
CommandLineRunner
나 다른 부트스트랩 방법을 사용해보세요. 이곳에서 필요로 하는 로그를 잡울 수 있을 겁니다.SpringApplication.run(Application.class, args);
부분에 추가적인 애프터 실행 로직을 넣어 볼 수 있습니다.프로파일 혹은 빌드 옵션
참조할 수 있는 관련 자료
같은 문제를 겪고 계신 많은 분들을 돕기 위해, 배치와 관련된 깊은 설정 및 문제 해결에 대한 논의가 인프런에서도 자주 얘기되었습니다.
- Spring Boot 애플리케이션에서 로그 출력 제어 관련 논의
해당 링크의 논의들을 통해 유사한 문제의 해결 사례를 참고해 보시길 추천드립니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
아래와 같습니다.
1) build.gradle 파일 내용
2) KillBatchSystemApplication 클래스
3) Job 이름 설정