什么是Quartz?
一个定时任务调度框架,简单易用,功能强大可以使实现定时任务的。
在项目开发过程当中,某些定时任务,可能在运行一段时间之后,就不需要了,或者需要修改下定时任务的执行时间等等。
需要在代码当中进行修改然后重新打包发布,很麻烦。使用Quartz来实现的话不需要重新修改代码而达到要求。
springboot整合Quartz定时调度框架
开发环境
- JDK版本1.8
- springboot版本:2.1.0
- 开发工具:IDEA
实现一个简单的定时任务
第一步 引入对应的jar
在springboot2.0后官方添加了Quartz框架的依赖,所以只需要在pom文件当中引入
<!--引入quartz定时框架-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
第二步 创建一个定时任务
由于springboot2.0自动进行了依赖所以创建的定时任务类直接继承QuzrtzJobBean就可以了,新建一个定时任务类:MyTask
public class MyTask extends QuartzJobBean {
@Override
protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
//TODO 这里写定时任务的执行逻辑
System.out.println("简单的定时任务执行时间:"+new Date().toLocaleString());
}
}
第三步 创建Quartz配置类将之前创建的定时任务添加到定时调度里面
@Configuration
public class QuartzConfig {
//指定具体的定时任务类
@Bean
public JobDetail uploadTaskDetail() {
return JobBuilder.newJob(MyTask.class).withIdentity("MyTask").storeDurably().build();
}
@Bean
public Trigger uploadTaskTrigger() {
//TODO 这里设定执行方式
CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule("*/5 * * * * ?");
// 返回任务触发器
return TriggerBuilder.newTrigger().forJob(uploadTaskDetail())
.withIdentity("MyTask")
.withSchedule(scheduleBuilder)