首先,需要在主启动类上添加@EnableScheduling
注解,开启定时任务相关配置。
@SpringBootApplication
@EnableScheduling
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
然后就是创建定时任务类,注意添加@Component
,将对象添加进容器中,并在相关的方法上添加@Scheduled
注解,配置相关的表达式,规定定时任务执行的频次
@Component
public class ScheduledTask {
@Scheduled(cron="*/30 * * * * *")
public void taskRun(){
System.out.println("执行定时任务" + System.currentTimeMillis());
}
}
corn表达式相关语法
corn表达式是一个字符串,以5个或6个空格分为6个或七个域,每个域代表含义如下:
- Seconds Minutes Hours DayofMonth Month DayofWeek
- Seconds Minutes Hours DayofMonth Month DayofWeek Year
对应的: 秒 分 小时 月份中的日期 月份 星期中的日期 年份
常用的
*
号 表示匹配该域的任意值;
?
号 只能用于日期和星期两个域,表示匹配的任意值,但是两者会相互影响;
-
号 表示范围,比如分钟域的3-9表示3分到9分钟每分钟执行一次;
/
号 表示在起始时间触发后,每间隔多久触发一次,这个用的非常多,例如5/20表示5分钟触发后,25,45分别触发一次;
,
号 表示枚举值,分钟域的10,20表示10分钟和20分钟分别触发一次
其它符号可以查阅相关文档
常见表达式
0 15 10 * * ?
每天上午10点15分触发
0 0/30 9-17 * * ?
朝九晚五工作时间内每半小时
0 10,40 14 ? 3 WED
每年三月的星期三的下午2:10和2:40触发