목록 보기
spring batch lazy하게 의존하기
백엔드

spring batch lazy하게 의존하기

what's min
what's min
2024년 8월 21일

두줄요약

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로 저장소 범위도 구분

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...