• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

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

21.10.17 23:43 작성 조회수 242

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 를 활용해서 사용해 보지는 않았습니다.

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