인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

iloveoov님의 프로필 이미지
iloveoov

작성한 질문수

스프링 배치

배치 초기화 설정

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

해결된 질문

작성

·

342

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에 등록된 값이 없어서 패스하더라구요.

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

답변 1

2

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

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

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

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

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

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

 

 

iloveoov님의 프로필 이미지
iloveoov

작성한 질문수

질문하기