해결된 질문
작성
·
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 초기화 시 자동으로 JobRegistry에 Job을 등록 시켜줍니다.
그래서 executeRegisteredJob(jobParameters) 를 실행하게 되면 JobRegistry 에 등록된 Job 들을 실행하게 됩니다.
저도 JobRegistry 를 활용해서 사용해 보지는 않았습니다.
후반부 챕터의 스프링 테스트 및 운영에서 설명하고 있으니 참고 부탁드립니다.