在日常开发中我们经常会遇到定时器的需求,这段时间通过查阅资料,也有些收获,因此准备在这里跟大家分享下。
上次讲了如何利用Timer和TimerTask类创建定时任务;本文主要讲的是,如何利用springboot的@Scheduled注解,实现定时任务。
在创建springboot项目的时候,需要引入springboot的jar包,我们在使用@Scheduled注解的时候就不需要再导入其他的包了;
程序实例:
//测试类
public class MyTask{
@Scheduled(cron = “0 39 15 * * ? “)//注解此方法为定时任务,其中cron是一种表达式,可以标注出任务的循环周期
public void taskTest(){//定时任务方法
//业务逻辑
System.out.println(“my task is running!”);
}
}
测试类已经写好,那么怎么才能启动任务呢?
很简单,只要在启动程序上加上@EnableScheduling注解即可:
@EnableScheduling
@SpringBootApplication
public class Application{
public statis void main(String[] args){
SpringApplication.run(Application.class,args);
}
}
附cron的用法:
一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素。
按顺序依次为:秒、分钟、小时、天、月,星期、年份。
各字段的取值如下:
Seconds : 取值为”, – * /”四个字符,或者0-59的整数
Minutes : 取值为”, – * /”四个字符,或者0-59的整数
Hours : 取值为”, – * /”四个字符,或者0-23的整数
DayofMonth : 取值为”, – * / ? L W C”八个字符,或者0-31的整数
Month : 取值为”, – * /”四个字符,或者1-12的整数或JAN-DEc
DayofWeek : 取值为”, – * / ? L C #”四个字符,或者1-7的整数或SUN-SAT两个范围
Year : 取值为”, – * /”四个字符,或者1970-2099的整数
其中特殊字符, – * ? / L C #等的解释可点此处查看。