依賴
<!-- 定時器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
配置文件
package com.sundear.demo;
import com.sundear.Timing.*;
import org.quartz.JobDetail;
@Configuration
public class QuartzConfiguration {
// 配置定時任務1
@Bean(name = "firstJobDetail")
public MethodInvokingJobDetailFactoryBean firstJobDetail(TimingByDay timingByDay) {
MethodInvokingJobDetailFactoryBean jobDetail = new MethodInvokingJobDetailFactoryBean();
// 是否並發執行
jobDetail.setConcurrent(true);
// 為需要執行的實體類對應的對象
jobDetail.setTargetObject(timingByDay);
// 需要執行的方法
jobDetail.setTargetMethod("task");
return jobDetail;
}
// 配置觸發器1
@Bean(name = "firstTrigger")
public CronTriggerFactoryBean firstTrigger(JobDetail firstJobDetail) {
CronTriggerFactoryBean trigger = new CronTriggerFactoryBean();
trigger.setJobDetail(firstJobDetail);
// 設置定時時間
trigger.setCronExpression("0 46 15 * * ? 2020");
return trigger;
}
// 配置定時任務2
@Bean(name = "secondJobDetail")
public MethodInvokingJobDetailFactoryBean secondJobDetail(TimingByWeek timingByWeek) {
MethodInvokingJobDetailFactoryBean jobDetail = new MethodInvokingJobDetailFactoryBean();
// 是否並發執行
jobDetail.setConcurrent(true);
// 為需要執行的實體類對應的對象
jobDetail.setTargetObject(timingByWeek);
// 需要執行的方法
jobDetail.setTargetMethod("task");
return jobDetail;
}
// 配置觸發器2
@Bean(name = "secondTrigger")
public CronTriggerFactoryBean secondTrigger(JobDetail secondJobDetail) {
CronTriggerFactoryBean trigger = new CronTriggerFactoryBean();
trigger.setJobDetail(secondJobDetail);
trigger.setCronExpression("0 24 19 * * ? 2020");
return trigger;
}
// 配置Scheduler
@Bean(name = "scheduler")
public SchedulerFactoryBean schedulerFactory
(Trigger firstTrigger, Trigger secondTrigger,Trigger thirdTrigger,
Trigger forthTrigger,Trigger fifthTrigger) {
SchedulerFactoryBean bean = new SchedulerFactoryBean();
// 延時啟動,應用啟動5秒后
bean.setStartupDelay(5);
// 注冊觸發器
bean.setTriggers(firstTrigger,secondTrigger,thirdTrigger);
return bean;
}
}
把定時任務綁定在對應的代碼上
@Component
@EnableScheduling
public class TimingByDay {
//要定時執行的代碼
}
@Component
@EnableScheduling
public class TimingByWeek {
//要定時執行的代碼
}
springboot項目啟動類需要加上 @EnableScheduling,啟動定時任務