定时任务

依赖于spring boot注解@scheduled和@EableScheduling实现定时任务功能。
使用方式很简单,两步就搞定了,如下:
1:在spring boot项目的启动类中加入@EableScheduling注解,表示启用工作计划。


pic-1590656781868.png

2:在需要定时执行的任务的方法上(不出意外的话,该方法在业务层里,注意@Service注解)加上@Scheduled注解,表示这是一个定时的任务。


pic-1590656781869.png

把上面两步配置好,这时候你就已经成功的配置好一个定时任务了上面的任务是每隔一分钟执行一次。

依赖于spring boot 注解的定时任务本没有什么好讲的,这里着重讲解一下@Scheduled注解里面的参数

1:corn 表达式(这里推荐一个在线生成corn表达式的网址: http://qqe2.com/cron
corn 表达式包含6个参数(也存在7个参数,但是第7个通常不用)

如图,我给出的表达式就是6个参数,6个参数表示的含义分别是:秒,分,时,日,月,周。
刚刚,我说有第7个参数,那就是年,不过第7个参数一般不使用,这里主要讲解前6个参数的用法。
第一个参数:秒
一个秒就有4种写法。
第一种:表示每秒都要执行的任务。那么使用通配符 *
eg:* * * * * ?(?只能在日和周的位置使用,下面再讨论)
第二种:在分的某一个区间(秒的时间段)里执行。
eg:23-34 * * * * ?
含义解释:在每分钟的23-34秒的时候执行定时任务。
第三种:从分的几秒开始,隔多少秒执行一次。
eg:4/5 * * * * ?
含义解释:从大于4秒的时候开始,每隔5秒运行一次定时任务。(也就是说第一次开始运行定时任务是在9秒的时候)
第四种:指定秒数(0-59),执行定时任务
eg:9,34,4,32 * * * * ?
含义解释:分别在每分钟的第9秒,第34秒,第4秒,第32秒执行一次定时任务。
其他参数:分,时,天,月,周,年,都类似的用法,不过周(通常直接写?就行)和年不经常用,指定某一年直接写年份就好。

着重讲解一下第六个参数 : 周 
通常周是用?表示的,占位符,不起任何作用,但是要指定的话,有1-7整数指定,分表代表周日到周一。当然也可以用英文的缩写表示( SUN~SAT)(千万要注意的是,一周的第一天是周日,而不是周一)还需要注意的一个点是:第四个参数:日和第六个参数周,只能同时出现一个指定的参数,对日的参数有做出表示,那么周参数就给个?(占位符)。?占位符只有日和周的参数位置才能使用
每周一的凌晨三点钟执行一次:
0 0 3 ? * 2

个人觉得,定时任务最重要的一点是,从什么时候开始,每个多久执行一次:
1:从每天的0点0分0秒开始,每隔10分钟执行一次(过了0点就不执行了)
0 0/10 0 * * ?

2:从整点开始,每10分钟执行一次
0 0/10 * * * ?

3:从每天的0点开始,每隔3小时执行一次
0 0 0/3 * * ?

4:从每月的一号开始,每个3天执行一次
0 0 0 1/3 * ?

5:从每年的一月开始,隔2个月执行任务
0 0 0 1,3,5 1/2 ?

posted @ 2020-05-28 17:09  林就远  阅读(744)  评论(0编辑  收藏  举报