package com.example.demo.quartz;
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.Date;
@Configuration
public class QuartzConfig {
@Bean
public JobDetail getJobDetail(){
JobDetail firstJob = JobBuilder.newJob(MyJob.class)
.withIdentity("firstJob")
//将JobDetail持久化到内存中
//由于JobDetail和Trigger目前还是单独两个个体,JobDetail创建完成后没有Trigger指向它会被删除
.storeDurably(true)
.build();
return firstJob;
}
//为什么不将Trigger纳入容器:
//如果将Trigger纳入容器,这个触发器需要在创建的时候就关联一个Job,并且会自动将任务执行
//@Bean
public static Trigger getTrigger(){
Trigger trigger = TriggerBuilder.newTrigger()
.withSchedule(SimpleScheduleBuilder.simpleSchedule().withRepeatCount(0))
.startAt(new Date(System.currentTimeMillis()+5000))
.build();
return trigger;
}
@Bean(name = "MySchedule")
public Scheduler getSchedule(JobDetail jobDetail) throws SchedulerException {
Scheduler scheduler = new StdSchedulerFactory().getScheduler();
// Trigger trigger = QuartzConfig.getTrigger();
// scheduler.scheduleJob(jobDetail,trigger);
scheduler.start();
return scheduler;
}
}