73 lines
2.3 KiB
Java
73 lines
2.3 KiB
Java
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 실행기 클래스입니다.
|
|
*
|
|
* <p>이 클래스는 Quartz 스케줄러에 의해 호출되며, 지정된 Spring Batch Job을 실행합니다.</p>
|
|
*
|
|
* <p>주요 기능:</p>
|
|
* <ul>
|
|
* <li>JobRegistry에서 지정된 이름의 Job을 조회</li>
|
|
* <li>Job 실행을 위한 JobParameters 생성</li>
|
|
* <li>JobLauncher를 통한 Job 실행</li>
|
|
* </ul>
|
|
*
|
|
* @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을 실행합니다.
|
|
*
|
|
* <p>이 메소드는 다음과 같은 작업을 수행합니다:</p>
|
|
* <ol>
|
|
* <li>JobRegistry에서 지정된 이름의 Job을 조회</li>
|
|
* <li>현재 시간을 기반으로 한 고유한 JobParameters 생성</li>
|
|
* <li>JobLauncher를 사용하여 Job 실행</li>
|
|
* </ol>
|
|
*
|
|
* @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);
|
|
}
|
|
}
|
|
|
|
}
|