核心概念 ​
Job: Job是Quartz中的一个函数式接口,其中的execute方法就是我们需要具体实现的业务任务逻辑。
JobDetail: JobDetail是用于绑定Job,并对Job进行描述,其中提供了很多描述性属性如: name 任务名称 group 任务组 description 任务描述 jobClass 任务类 jobDataMap 任务自定义参数
Trigger: Trigger是触发器,用于定义Job的执行时间、执行间隔、执行频率等。 在Quartz中主要有四种类型的Trigger:SimpleTrigger、CronTrigger、DataIntervalTrigger和NthIncludedTrigger。
Scheduler: Scheduler是调度器,用于实际协调和组织JobDetail与Trigger。 Quartz提供了DirectSchedulerFactory和StdSchedulerFactory等工厂类,用于支持Scheduler相关对象的产生
概念之间的关系
代码示例 ​
java
@Slf4j
@Component
public class AfterPromoJob extends QuartzJobBean {
@Autowired
PromoService promoService;
@Override
protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
log.info("定时任务开始,删除缓存……");
// promoService.clearRedisCache();
System.out.println("删除缓存");
log.info("定时任务结束");
}
}java
@Configuration
public class QuartzConfig {
@Bean("afterPromoJobDetail")
public JobDetail afterPromoJobDetail() {
return JobBuilder.newJob(AfterPromoJob.class)
.withIdentity("afterPromoJobDetail")
.storeDurably()
.build();
}
@Bean("afterPromoJobTrigger")
public Trigger afterPromoJobTrigger() {
CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule("0 33 0 * * ?");
return TriggerBuilder.newTrigger()
.forJob(afterPromoJobDetail())
.withIdentity("afterPromoJobTrigger")
.withSchedule(cronScheduleBuilder)
.build();
}
}