37.0、springboot-定时执行任务的实现
这一节主要来讲讲以下几个内容
TaskScheduler 任务调度器
TaskExecutor 任务执行者
@EnableScheduling 开启定时功能的注解
@Scheduled 什么时候执行
Cron表达式
想要实现定时执行任务,需要以下几个步骤
第一步:在springboot主启动类中加上@EnableScheduling开启定时执行功能
第二步:我们就来写一个简单的定时任务执行代码,来感受一下。
创建一个ScheduledService.java文件如下:
package com.hkl.service;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
@Service
public class ScheduledService {
//在一个特定的时间执行这个方法~ Timer
//Cron表达式
//秒 分 时 日 月 周几~
/*
30 15 10 * * ? 每天10点15分30秒执行一次
30 0/5 10,18 * * ? 每天10点到18点,每个五分钟执行一次
0 15 10 ? * 1-6 每个月的周一到周六 10点15分执行一次
*/
@Scheduled(cron = "30 15 10 * * ?")
public void hello() {
System.out.println("hello,你被执行了~");
}
}
能看到在上面代码中的hello()方法上加了一个@Scheduled注解,
在这个注解里我们可以使用Cron表达式来设置在特定的时间让他执行这个hello()方法。
在上述Cron表达式中我们设定的意思是:在一周一天中每一天(因为写的是问号,问号代表每一天都执行)10点15分30秒执行这个hello()方法,
第三步:任务定时执行测试,测试很简单我们只需要把这里面的时间参数改一改,然后用测试类去调用这个方法就好了。
例如:我们可以将时间设置为当前时间的下一分钟,然后启动测试,
预期结果是在下一分钟到达的时候,后台打印出hello,你被执行了~ 这段话。
Cron表达式还有很多很多种,这个可以自行百度都有很多很多的例子
想要熟练掌握这个的话还是需要我们自己多看多练才能掌握