백엔드
spring batch lazy하게 의존하기
두줄요약
Spring Batch에서 특정 Job만 실행하려고 해도 다른 Job Bean 초기화 오류가 전체를 막는 문제를 다루었습니다. lazy initialization과 직접 만든 JobRunner로 필요한 Job만 늦게 로딩하는 방법을 설명했습니다.
문제 상황
- Spring Batch에서 여러 Job Bean을 한 번에 띄우면 선택하지 않은 Job까지 초기화되며 runtime exception이 발생하는 문제
- job A만 실행하려 해도 job B가 참조하는 MongoDB 관련 Bean 초기화 실패가 전체 실행을 막는 구조
해결 방법
spring.main.lazy-initialization=true로 필요한 시점까지 Bean 생성을 미루는 방식 적용- 기본
jobLauncherCommandLineRunner대신spring.batch.job.enabled=false로 비활성화하고, 직접JobRunner를 만들어job.name만 Bean 조회 후 실행 - MongoTemplate 같은 문제 Bean은 실제 사용 Job에만 연결되도록 분리하고,
@EnableMongoRepositories로 저장소 범위도 구분
