강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

iloveoov님의 프로필 이미지
iloveoov

작성한 질문수

스프링 배치

배치 초기화 설정

JobLauncherApplicationRunner 초기화 과정에서 executeRegisteredJobs 부분은 어떤 부분을 처리하는 건가요?

해결된 질문

작성

·

372

0

protected void launchJobFromProperties(Properties properties) throws JobExecutionException {
JobParameters jobParameters = this.converter.getJobParameters(properties);
executeLocalJobs(jobParameters);
executeRegisteredJobs(jobParameters);
}

위 메소드 처리중 executeRegisteredJob(jobParameters) 메소드 디버그 잡아서 확인해보았는데

jobRegistry에 등록된 job이름과 jobNames를 비교해서 일치하면 execute를 실행시키는 로직인데

jobRegistry에 등록된 값이 없어서 패스하더라구요.

저과정이 어떤 역할을 하는건지 궁금합니다.

퀴즈

스프링 부트 애플리케이션 시작 시 등록된 배치 Job을 자동 실행하는 핵심 컴포넌트는 무엇일까요?

JobRepository

PlatformTransactionManager

JobLauncherApplicationRunner

StepBuilderFactory

답변 1

3

정수원님의 프로필 이미지
정수원
지식공유자

JobRegistry 는 후반부 챕터에서 학습하게 되는데 생성한 job 들을 스프링의 ApplicationContext 에 저장하는 역할을 합니다.

즉 JobRegistryBeanPostProcessor 라는 빈 후처리기가 있는데 스프링의 빈 라이플 사이클 단계 중 BeanPostProcessor 단계에서 bean 초기화 시 자동으로 JobRegistryJob을 등록 시켜줍니다.

그래서 executeRegisteredJob(jobParameters)  를 실행하게 되면 JobRegistry 에 등록된 Job 들을 실행하게 됩니다.

저도 JobRegistry 를 활용해서 사용해 보지는 않았습니다.

후반부 챕터의 스프링 테스트 및 운영에서 설명하고 있으니 참고 부탁드립니다.

 

 

iloveoov님의 프로필 이미지
iloveoov

작성한 질문수

질문하기