那么Spring Schedule Cron表达式呢,其实和 Quartz 的表达式是一样的,我们一起来看一下。首先第一个是秒,第二位是分,第三位是小时,第四位是日,第五位是月,第六位是周,第七位是年,年是可选的,那对于年来说,实际生产环境并不是太多,所以我们主要是把前六位弄明白,那如果前六位明白的话,那第七位的年,也很轻松理解的我们接着来看,现在对第五六七位的介绍,那我们看一下,关于这些字段允许的值,和允许的特殊字符。
首先秒允许的值是0到59,运行的特殊字符是逗号,横线,星号和斜杠,那分和小时允许的特殊符号一样的,只不过小时是从0点到23点,月内日期是1到31,然后月大家看一下,1到12,或者英文,周内日期是1到7,年一般都留空,右侧的特殊符号第一次接触的时候也不用慌,我们现在来挨个解释一下,我们一起来看一下。
首先是星号,代表匹配所有的值,那星号用处是最多的,第二个问号,只有在星期域和日期域中使用,他被用来指定非明确的值,那一会在我们实际项目中,使用的Cron表达式也会用到问号,横线是指定一个范围,如10-12,代表的是10点,11点,12点,前提是我们把10-12设置在小时域,逗号就是一个可选值,如星期一逗号,星期三逗号,星期五逗号,斜杠是比较重要的,这里表示指定的增量,如0/15,如果在秒域意思是,每分钟的0秒,15秒,30秒,45秒,那5/15在分钟域呢,所表示每小时的5分钟,20分钟,35分钟和50分钟,也就是说从第5分钟开始,增量15,然后就是20,再增量15就是35,再增量15就是50,然后我们经常能看到的写法,就是*/10,其实呢,*/10和0/10,是一样的,也就是初始值都是从0开始的,那对于星号问号,斜杠,我们实际工作当中,使用的是最多的,下面说一下L,表示day-of-month,和day-of-week域,但是这两个字段中的意思不同,例如day-of-month呢,所表示这个月的最后一天,那后边有一些例子,L我们实际用的不是太多,有兴趣的可以去查一下,然后我们继续来看。
大家看到这么多表不要慌,一会把表达式的生成器一起来理解一下,W是只允许在日期域出现的,这个字符是指定日期的,最近工作日,W相对复杂一些,可以仔细看一下,然后我们看一下LW,L和W是可以在日期中联合使用的,LW表示这个月最后一周的工作日,井号是只允许在星期域中出现的,这个字符用于指定本月的某某天,而6#3表示本月第三周的星期五,那6就表示星期五,3表示第三周,毕竟Cron表达式是老外发明的,那星期日就作为一周的第一天,星期六作为一周的第七天,那第六天就是一周的星期五,所以4#5就代表第五周的星期三,然后C是允许在星期域和日期域中出现,我们这里面就不详细的介绍了。