00:00
好,接下来呢,我们来测试定时任务,定时任务呢,在我们开发中用的也非常多,比如我们每天凌晨的时候来收集和分析日志,或者呢,我们每个月有那么一天,我们来汇总上个月数据,生成报表等等等等。spring呢,也提供了非常简便的定时任务支持,我们只需要两个注解,第一个呢,开启定时任务,第二个呢,给我们需要定时的方法上来标注schedule注解,然后呢来写上我们定时的这些CH表达式即可。好,我们来测试一下。我呢,在这儿创建一个service。我们创建一个service,你叫scheduled service,好把它呢,我们来加在容器中,假设呢,它有一个方法public world hello,这个方法呢,我们需要定时执行好,我们就来输出hello。
01:00
那么呢,我们只需要给此方向上来标注一个schedule的注解,这个注解里边呢,有非常多的属性,我们点进来,哎,最重要的呢,就是我们这个,它来指定我们定时任务的表达式,来指定一下C这个表达式怎么写呢?来点进来这块呢,有提示说我们这个表达式呢,包含我们这个有秒和分时,还有每月的哪一天,还有咱们这月份,还有咱们这个每周的哪一天,哎就由这么几个值来把它复制过来。好,我给大家注释在这儿,秒分时这个呢,日月,还有咱们这个周周几就是这样,所以呢,来写表达式的话呢,我们就按照这个表达式来写,这还有一个事例,我来拿过来。
02:01
这个例子,然后呢,表达式是总共六位,每位呢用空格分割,分割的这六位呢,分别就代表哎哪一秒,我们说的这个秒,还有分哪一分钟时,哎,我们几点,我们这个时,还有我们这个日是我们每个月的,咱们这个多少号,还有我们这个月。和周,这代表是周几周几,好,那么我们就来写上一个表达式,它这个表达式呢,代表的意思是从周一到周五,也就是这个Monday Friday,周一到周五,这个星呢,代表任意时刻,也就是说不管是哪一月哪一日,哪一个小时,哪一个分钟,但是呢,整秒启动,意思呢,周一到周五,也就是说每一分钟都启动一次,它这个是整秒启动,而如果我把这个零再改为星,那就是。
03:07
周一到周五每一分钟每一秒都用运行一次,好,我呢就改成零,我把它这个呢试一下。那么我们这一块呢,是一个周六,那我就可以写成Saturday。好,这是它的这个写法,我们来测试运行一下,我们整分钟的时候,它会不会启动呢。好,我们先看控制台没有,这个呢,是零六秒,那我们稍等一会儿。好,注意观察控制台,57 58 59整秒,我们发现呢,控制台并没有打印,原因呢,就是我们一定要在这开启我们这个定时任务功能,好来写一个able sky,把这个主体加上,我们叫开启基于注解的。
04:02
定时任务好把它加上以后呢,我们来重启一下这个应用。来到这个service里边,我们来看一下控制台是否会有打印,把这个清空来等到这个时间。来,我们来注意二一走,我们看到呢,控制台有打印哈,说明我们这个定时任务就做成了,关键这个表达式该怎么写呢?哎,我这个PPT上呢,给大家列举了他们的写法,每个位置除了写精确值,明确指定它什么时候启动外,还允许这些特殊字符,哎,这个星号呢,我们就刚才见过了,关键就是这些特殊字符,逗号呢代表枚举,所谓的枚举就是我列举出我要启动的那些精确时间点,那我在这呢,把这个表达式我来换一下,我把这些呢,我们都来尝试一下,来写一个at schedule。
05:07
好C表达式呢,我这个秒呢,我来列举上一。01234好,我列举上这么五秒的时间,那么这五秒呢,都会来启动,我来星号星号星号星号,剩下呢我都不变来放在这。比如说周一到周六,哎,不管是哪一天,哪一个小时哪一分钟,但是呢,01234这几秒呢,我们会运行一次来启动。我们来观察一下,好。哎,我们看一秒二秒,三秒四秒确实有运行,但是呢,四秒以后就不再运行了,这呢是我们说的第一个叫枚举,还有我们第二种办法,我们还可以写这个短横杠代表区间,好我来改一下,我不写01234,这么来列举太麻烦,我写一个零杠四比,就说呢,在零到四秒,每一秒呢,我都会启动一次,好我把这个呢,我再复制一个刚才这个逗号的方式,我们来放在这儿,1234,好,那我来启动一下。
06:28
我们来指定一个区间。好。我们来注意控制台。零秒,诶一秒二秒,三秒,四秒都有打印,四秒以后呢,就不打印了,这个区间我们也没问题,还有我们这个斜杠代表不长,不长呢,就是每隔多长时间来执行一次,那好我把之前这个呢,我再来逐点,我来写一个新的,我还是在秒上来进行测试,那么我写一个零杠四,那代表从零秒启动,每四秒执行一次。
07:08
来注释一下,每四秒执行一次,来尝试一下,我来启动,好,那启动来注意控制台。你把这个时间呢拿过来,哎,打了一个。哎,又打一个23456秒的时候走好,那就是每四秒来打一个好,我们来再来看一下其他的写法。这四个呢,是在每一个位置都可以这么来写的,当然还有一些额外的写法,比如有问号,问号呢是日和星期进行冲突匹配的,比如我们在星日期的位置,我写了一个星,代表每一天,而我在星期的位置呢,我写了一个Monday,哎,代表星期一,这两个呢就会有冲突,不是说每一天都是星期一,所以说呢,应该给这写问号,或者呢,如果我们写一号啊,我们每一个星期几这一块呢,也不能写星,我们写问号,这是来进行冲突匹配的,而且呢,特别注意星期这一块的写法,你可以来写英文Saturday Sunday到Saturday,那代表周日到周六,或者呢,你来写数字,那数字呢,你可以写零杠七中间的数字一杠六呢代表周一到周六,零和七都能代表周日。
08:39
这一点呢,可能跟大家以前用过市面上的一个调度框架course有点不一样,这course呢,它是一到七,一代表周日,二代表周一,而我们这个是零更七都是周日,那一到六是周一到周六,好大家注意一下,还有呢,我们能写的表达式,比如我们在这些位置还可以出现一些字母,L代表,最后W代表工作日,C呢是跟我们这个找的可能的类来进行计算,而井号能代表第几个,比如四井二的意思就是井二就是第二个,第二个什么呢?星期四我们写在这个位置,我呢就不一个一个尝试了,我给大家这呢写了一些表达式,大家只要能读懂就行了,比如第一个秒分十日月周,那就是每天的14点和18点。
09:39
整,哎,这都是零零,但是呢,它们每隔五分钟执行一次,哎,这是第一个表达式,第二个呢,一杠六,这是出现在周几的位置,那就说每个月的周一到周六,每天10:15执行一次,而这个6L呢,L我们说是最后,最后呢就叫最后一个周六,因为它出现在周的位置,就是说每月的最后一个周六两点执行一次,那么这个LW呢,L是最后一个W是工作日,它出现在了咱们这个日的位置,那么就是每一个月的最后一个工作日的凌晨两点执行一次,和最后这个这呢相当于每一个月的,哎,这一减一减一呢是代表第一个周一,每个月的第一个周一两点到四点整点执行一次,然后呢,两点到4.7间。
10:39
点执行一次,相当于它只执行了三次,哎,两点执行一次,三点执行一次,四点执行一次,这呢就是咱们这几个表达式。
我来说两句