spring3之后实现定时任务非常简单,只需使用@EnableScheduling+@Configuration来开启定时任务的支持和声明这是一个配置类,需要spring容器在启动时加载,然后在具体的定时方法上使用@Scheduled即可。
@Scheduled有这么几个参数,fixRate , fixDelay , cron:
- fixRate:fixRate的计时是相对于系统时间的,即每隔一定时间执行;
-
fixDelay:也是每隔一定时间执行一次。但是fixDelay是相对于上一次调用时间,因此它受其它程序调用的影响;
- cron:按照指定时间执行。
cron的规则:
每隔5秒执行一次:*/5 * * * * ?
每隔1分钟执行一次:0 */1 * * * ?
每天23点执行一次:0 0 23 * * ?
每天凌晨1点执行一次:0 0 1 * * ?
每月1号凌晨1点执行一次:0 0 1 1 * ?
每月最后一天23点执行一次:0 0 23 L * ?
每周星期天凌晨1点实行一次:0 0 1 ? * L
在26分、29分、33分执行一次:0 26,29,33 * * * ?
以上六个部分分别表示:秒、分、时、日、月、周
-:表示范围;
*:表示通配;
/:表示在左边的时间匹配后间隔右边的时间;
?:一般表示周的通配。
-
示例
@Configuration
@EnableScheduling//开启定时任务的支持
public class SchedulingConfig {
@Scheduled(cron = "0 5 1 * * ?") // 每天1点5分执行
public void scheduler1() {
System.out.println(">>>>>>>>> 每天1点5分报表生成成功");
}
@Scheduled(cron = "0 0/30 * * * ?") // 每30分钟执行一次
public void scheduler2() {
System.out.println("每30分钟取消订单"+num+"条");
}
}