方式1:非注解方式
1)创建工作任务
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;
public class MyQuartz extends QuartzJobBean {
//工作任务
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
System.out.println("myQuartz is running");
}
}
2)创建工作明细,工作明细中绑定具体的工作任务。
3)创建触发器,指定工作任务的执行间隔的调度器。绑定工作明细、调度器
import org.quartz.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class quartzConfig {
//1、工作明细
@Bean
public JobDetail getJobDetail(){
//在工作明细中绑定工作
return JobBuilder.newJob(MyQuartz.class).storeDurably().build();
}
//2、触发器
@Bean
public Trigger getTrigger(){
//3、使用Cron表达式创建调度器
// 0/5 * * * * ? ===> 0秒开始每5秒执行一次 任意分、时、日、月下
ScheduleBuilder<? extends Trigger> schedBuilder=
CronScheduleBuilder.cronSchedule("0/5 * * * * ?");
return TriggerBuilder.newTrigger()
//绑定工作明细
.forJob(getJobDetail())
//绑定调度器
.withSchedule(schedBuilder).build();
}
}
方式2:注解方式
1)开启定时任务处理器
@SpringBootApplication
//开启定时任务开关
@EnableScheduling
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
2)指定触发时机
@Component
public class Quartz {
//使用定时任务
@Scheduled(cron = "0/2 * * * * ?")
public void printQuartz(){
System.out.println(Thread.currentThread().getName()+"quartz is running");
}
}