spring cron表达式源码分析( 二 )


文章插图
在CronField类中有一个内部枚举类Type,它就是用来表示cron表达式中的字段(

在cron表达式中没有纳秒字段,其他都跟cron表达式是一一对应的

spring cron表达式源码分析

文章插图
先看下它的构造方法
spring cron表达式源码分析

文章插图
从上面也可以看到这个枚举类有两个字段,第一个是表示当前时间、日期的字段,后面是一个用来表示小于它的时间、日期字段的数组 。
代码的如下图
spring cron表达式源码分析

文章插图
主要代码就是上面框出来的:
  1. 将我们传入的cron字符串分割成数组 。
  2. 分别解析每个部分,创建CronExpression对象 。
    解析每个部分都调用的是CronField.parsexxx   这样的静态方法 。所有的解析基本是一致的,分别创建BitsCronField对象 。所以我们就只看CronField.parseSeconds方法 。
    spring cron表达式源码分析

    文章插图
    上面就是这个方法的全部代码了,从上面我标注的地方就能看到一个cron字段可以包含的其他符号,分别是,、/、-这3种额外的符号 。
    1、在标号1的地方首先把字段用,号拆分成数组,后面在for循环中对每个部分进行处理 。
    【spring cron表达式源码分析】2、在for循环中,首先判断是否包含/,如果不包含,就调用parseRange返回一个ValueRange 。

    经验总结扩展阅读