在Quartz中的主要概念:
- Scheduler:调度任务的主要API
- ScheduleBuilder:用于构建Scheduler,例如其简单实现类SimpleScheduleBuilder
- Job:调度任务执行的接口,也即定时任务执行的方法
- JobDetail:定时任务作业的实例
- JobBuilder:关联具体的Job,用于构建JobDetail
- Trigger:定义调度执行计划的组件,即定时执行
- TriggerBuilder:构建Trigger
1:导入依赖pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
2:创建QuartzJob1.java
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;
import java.text.SimpleDateFormat;
import java.util.Date;
public class QuartzJob1 extends QuartzJobBean {
@Override
protected void executeInternal(org.quartz.JobExecutionContext context) throws JobExecutionException {
System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "定时任务");
}
}
3:创建QuartzConfig.java定时器的配置类
import com.tbull.servicetbweb.task.QuartzJob1;
import org.quartz.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* 创建QuartzConfig,接着定义JobDetail,JobDetail由JobBuilder构建,同时关联了任务QuartzJob1,然后定义定时调度trigger
*/
@Configuration
public class QuartzConfig {
//定义JobDetail,JobDetail由JobBuilder构建,同时关联任务QuartzJob1
@Bean
public JobDetail jobDetail1() {
return JobBuilder.newJob(QuartzJob1.class).storeDurably().build();
}
//定义定时调度Trigger
//简单实现类SimpleScheduleBuilder用于构建Scheduler,TriggerBuilder则用于构建Trigger
@Bean
public Trigger trigger1() {
//第一种方案
//每天0点0分执行一次
CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule("0 0/1 * * * ?");
//第二种方案
// SimpleScheduleBuilder scheduleBuilder = SimpleScheduleBuilder.simpleSchedule()
// .withIntervalInSeconds(1) //每5秒执行一次
// .repeatForever(); //永远执行下去
return TriggerBuilder.newTrigger()
.forJob(jobDetail1())
.withSchedule(scheduleBuilder)
.build();
}
}