① Job:任务 (要做什么)
② Trigger:触发器 (什么时候做)
③ Scheduler: 任务调度器 (什么时候做什么事情)
public class HelloJob {
public void hello() {
System.out.println("============== Hello ==============");
}
}
ScheduleConfig
@Configuration
public class ScheduleConfigOne {
public MethodInvokingJobDetailFactoryBean methodInvokingJobDetailFactoryBean(Object entity, String method) {
MethodInvokingJobDetailFactoryBean bean = new MethodInvokingJobDetailFactoryBean();
bean.setConcurrent(false); //同一Job不允许并发操作
bean.setTargetObject(entity); //需要执行的实体类对象
bean.setTargetMethod(method); //需要执行的实体类的方法
return bean;
}
//配置定时任务
@Bean
public MethodInvokingJobDetailFactoryBean helloJob() {
HelloJob helloJob = new HelloJob();
return methodInvokingJobDetailFactoryBean(helloJob, "hello");
}
//配置触发器
@Bean
public CronTriggerFactoryBean helloTrigger(JobDetail helloJob) {
CronTriggerFactoryBean bean = new CronTriggerFactoryBean();
bean.setJobDetail(helloJob);
bean.setCronExpression("0 0/1 * * * ?");
return bean;
}
//配置调度器
@Bean
public SchedulerFactoryBean schedulerFactory(Trigger helloTrigger) {
SchedulerFactoryBean bean = new SchedulerFactoryBean();
bean.setTriggers(helloTrigger);
return bean;
}
}
第二种方式
HelloJob
@Component
public class HelloJob extends QuartzJobBean {
@Override
protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
System.out.println("============== Hello ==============");
}
}
ScheduleConfig
@Configuration
public class ScheduleConfig {
@Bean
public MethodInvokingJobDetailFactoryBean methodInvokingJobDetailFactoryBean() {
MethodInvokingJobDetailFactoryBean bean = new MethodInvokingJobDetailFactoryBean();
bean.setConcurrent(false); //同一job不允许并发运行
return bean;
}
@Bean
public JobDetail jobDetail(){
return JobBuilder.newJob(HelloJob.class)
.withIdentity("HelloJob")
.storeDurably()
.build();
}
@Bean
public Trigger trigger(){
// 每5秒执行一次
CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule("0/5 * * * * ? ");
return TriggerBuilder.newTrigger()
.forJob(jobDetail())
.withIdentity("HelloTrigger")
.withSchedule(cronScheduleBuilder)
.build();
}
}



