springboot版本2.7.6,添加依赖
<artifactId>spring-boot-starter-quartz</artifactId>
1.创建任务实现类
public class a implements Job { @Override public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { System.out.println(new Date()+"定时任务开始执行"); } }
implements job并鼠标放置类上,implements method重写方法
或者ALT+enter键重写。
2.创建main方法
如果不是main方法,而是向我刚开始用@Test运行的话,会导致只运行一次,具体原因不知道。
public static void main(String[] args) throws SchedulerException { // 3.创建定时任务工厂,一个小细节,先SchedulerFactory,后面在=new 对象,不然会变成new SchedulerFactory; SchedulerFactory schedulerFactory=new StdSchedulerFactory(); // 4.创建定时任务 Scheduler scheduler = schedulerFactory.getScheduler(); // 5.创建任务,并绑定之前创建的类 JobDetail jobDetail = JobBuilder.newJob(a.class).withIdentity("job", "group").build(); // 6.创建触发器,并设置出发条件 SimpleTrigger simpleTrigger = TriggerBuilder.newTrigger().withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(1).repeatForever()).build(); // 7.定时任务绑定任务和触发器 scheduler.scheduleJob(jobDetail,simpleTrigger); // 8.开启定时任务 scheduler.start(); }
二.不放在main中,使用Application运行
@Component //将类注册为@Component public class quartz { @Bean //将方法注册为@Bean public void test() throws SchedulerException { SchedulerFactory schedulerFactory = new StdSchedulerFactory(); Scheduler scheduler = schedulerFactory.getScheduler(); JobDetail jobDetail = JobBuilder .newJob(job.class) .withIdentity("job", "group") .build(); SimpleTrigger simpleTrigger = TriggerBuilder .newTrigger() .withSchedule(SimpleScheduleBuilder .simpleSchedule() .withIntervalInSeconds(1) .repeatForever()).build(); scheduler.scheduleJob(jobDetail,simpleTrigger); scheduler.start(); } }
最后在Application上加@EnableScheduling
三.注解方式
@Component //同样注册为@Component public class jobTest { @Scheduled(cron = "0/1 * * * * ? ") //cron表达式 public void Test() { System.out.println("hhhh"); } }
最后也要在Application上加@EnableScheduling
zone表示时区
Delay是延迟
initialDelay是初始化后延迟