package org.springblade.modules.quartz.config; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.quartz.DisallowConcurrentExecution; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.springblade.modules.quartz.entity.ScheduledJob; import org.springblade.modules.quartz.event.ScheduleEvent; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationEventPublisher; /** * 该类将会被org.springframework.scheduling.quartz.SpringBeanJobFactory 实例化 * 并使@Autowired 生效 * @author zhongrj * @since 2022-03-17 */ @Slf4j @DisallowConcurrentExecution public class QuartzJob implements Job { @Autowired private ApplicationEventPublisher eventPublisher; /** * 任务调度参数key */ public static final String JOB_PARAM_KEY = "JOB_PARAM_KEY"; @Override @SneakyThrows public void execute(JobExecutionContext jobExecutionContext){ ScheduledJob scheduledCron = (ScheduledJob)jobExecutionContext.getMergedJobDataMap().get(JOB_PARAM_KEY); eventPublisher.publishEvent(new ScheduleEvent(scheduledCron)); } }