springboot定时任务

1. 开启springboot定时任务功能

在springboot的主启动程序添加注解@EnableScheduling

@SpringBootApplication
@EnableScheduling

2. 创建定时任务

新建一个类,该类用户处理某一业务类型的定时任务,比如商品系统中,商品分类的各种统计数据业务类CatalogCountScheduler类。注意,该类是需要交给spring容器管理的,所以需要在该类类名上贴上@Component注解
然后就可以创建定时任务了,每个方法代表一个任务,在方法上贴上注解@Scheduled,比如:

 /**
  * 每天凌晨2点钟执行该定时任务
 */
 @Scheduled(cron = "0 0 2 * * ?")
 public void catalogContScheduled(){}

3. @Scheduled注解属性

1. cron

字段允许值允许特殊字符
0-59- * , /
0-59- * , /
小时0-23- * , /
1-31- * , ? / L W
1-12或JAN-DEC- * , /
1-7或SUN-SAT- * , ? / L #
留空或1970-2099- * , /

cron是cornexpression表达式的意思:
cornexpression表达式详解:
完整字段:[秒] [分] [小时] [日] [月] [周] [年]

字段允许值允许特殊字符
0-59- * , /
0-59- * , /
小时0-23- * , /
1-31- * , ? / L W
1-12或JAN-DEC- * , /
1-7或SUN-SAT- * , ? / L #
留空或1970-2099- * , /

注:

  1. *表示所有值,在分钟里表示每一分钟触发。在小时,日期,月份等里面表示每一小时,每一日,每一月。
  2. ?表示不指定值。表示不关心当前位置设置的值。 比如不关心是周几,则周的位置填写?。  主要是由于日期跟周是有重复的所以两者必须有一者设置为?
  3. -表示区间。小时设置为10-12表示10,11,12点均会触发。
  4. ,表示多个值。 小时设置成10,12表示10点和12点会触发。
  5. / 表示递增触发。 5/15表示从第5秒开始,每隔15秒触发。或者*/20,表示每隔20秒执行一次。
  6. L 表示最后的意思。 日上表示最后一天。星期上表示星期六或7。 L前加数据,表示该数据的最后一个。星期上设置6L表示最后一个星期五。 6表示星期五
  7. W表示离指定日期最近的工作日触发。15W离该月15号最近的工作日触发。
  8. .#表示每月的第几个周几。 6#3表示该月的第三个周五。

示例:
"0 0 12 * * ?" 每天中午12点触发
"0 15 10 ? * *" 每天上午10:15触发
"0 15 10 * * ?" 每天上午10:15触发
"0 15 10 * * ? *" 每天上午10:15触发
"0 15 10 * * ? 2005" 2005年的每天上午10:15触发
"0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发
"0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发
"0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
"0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发
"0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发
"0 15 10 15 * ?" 每月15日上午10:15触发
"0 15 10 L * ?" 每月最后一日的上午10:15触发
"0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发
"0 0 */2 * * ?" 每两个小时

2. fixedRate

上一次开始执行时间点向后延迟多少时间执行,单位是毫秒。例如:

//上一次开始执行时间点向后每隔20秒执行一次。
@Scheduled(fixedRate = 20000):

3. fixedDelay

上一次执行完毕时间点向后延迟多少时间执行,单位是毫秒。例如:

//上一次执行完毕时间点向后每隔20秒执行一次。
@Scheduled(fixedDelay = 20000):

4. initialDelay

可以和fixedRate、fixedDelay组合使用。例如:

//第一次延迟6秒后执行,之后按fixedRate的规则每20秒执行一次。
@Scheduled(initialDelay=6000, fixedRate=20000)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值