一、添加依赖
<!--SpringBoot整合Quartz依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
二、创建执行任务类
此类的作用是,被 JobBuilder.newJob(QuartzJob.class)方法调用,在类里填写需要按计划执行的任务。
必须实现Job接口 implements Job,每次运行的时候都会实例化该类
@Slf4j
public class QuartzJob implements Job {
@Autowired
StockMapper stockMapper;
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
//触发任务,只要触发了任务就会输出系统时间
log.info("--------"+ LocalDateTime.now()+"---------");
stockMapper.updateStockCount("PC100",-1);
}
}
三、添加配置类
创建触发任务(JobDetail ),和触发时间(Trigger)
JobDetail 按照 Trigger的规定时间来实例化QuartzJob.class实现按照时间任务执行方法
//配置Spring容器需要添加@Configuration注解
@Configuration
public class QuartzConfig {
//配置的核心是JobDetail和Trigger对象
//JobDetail任务内容,Trigger触发实际
//利用Bean将两个对象添加到容器中
@Bean
public JobDetail showTime() {
System.out.println("!!!!!!!!!!!!!!!!!!!!");
//利用JobBuilder类的newJob方法指定要运行的Job实现类的反射
return JobBuilder.newJob(QuartzJob.class)
//需要为当前任务起名字,方便Quartz调用
.withIdentity("dateTime")
//默认情况下JobDetail对象生成后,如果没有触发器绑定会被立即移除
//storeDurably方法,,当前对象生成后不会被移除
.storeDurably()
.build();
}
//Trigger触发器,指定触发时机
@Bean
public Trigger showTimeTrigger() {
System.out.println("+++++++++++++++++");
//声明cron表达式,定义触发时间
CronScheduleBuilder cron =
CronScheduleBuilder.cronSchedule("0/5 * * * * ?");
return TriggerBuilder.newTrigger()
//设置要绑定的jobDetail对象
.forJob(showTime())
//给当前触发器对象起名字
.withIdentity("dateTrigger")
//设置绑定cron表达式
.withSchedule(cron)
.build();
}
}