package com.spring.infra.quartz; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.batch.core.Job; import org.springframework.batch.core.JobParameters; import org.springframework.batch.core.JobParametersBuilder; import org.springframework.batch.core.configuration.JobRegistry; import org.springframework.batch.core.launch.JobLauncher; import org.springframework.lang.NonNull; import org.springframework.scheduling.quartz.QuartzJobBean; import org.springframework.stereotype.Component; import lombok.RequiredArgsConstructor; /** * Quartz 작업을 실행하는 Spring Batch Job 실행기 클래스입니다. * *

이 클래스는 Quartz 스케줄러에 의해 호출되며, 지정된 Spring Batch Job을 실행합니다.

* *

주요 기능:

* * * @author mindol * @version 1.0 * @see QuartzJobBean * @see JobLauncher * @see JobRegistry */ @Component @RequiredArgsConstructor public class QuartzJobLauncher extends QuartzJobBean { private final JobLauncher jobLauncher; private final JobRegistry jobRegistry; private String jobName; public void setJobName(String jobName) { this.jobName = jobName; } /** * Quartz 스케줄러에 의해 호출되는 메소드로, 실제 Job을 실행합니다. * *

이 메소드는 다음과 같은 작업을 수행합니다:

*
    *
  1. JobRegistry에서 지정된 이름의 Job을 조회
  2. *
  3. 현재 시간을 기반으로 한 고유한 JobParameters 생성
  4. *
  5. JobLauncher를 사용하여 Job 실행
  6. *
* * @param context Quartz JobExecutionContext 객체 */ @Override protected void executeInternal(@NonNull JobExecutionContext context) throws JobExecutionException { try { Job job = jobRegistry.getJob(jobName); JobParameters params = new JobParametersBuilder() .addString("JobID", String.valueOf(System.currentTimeMillis())) .toJobParameters(); jobLauncher.run(job, params); } catch (Exception e) { throw new JobExecutionException(e); } } }