你的位置:首页 > 软件开发 > Java > Spring定时器cron表达式详解

Spring定时器cron表达式详解

发布时间:2015-11-19 19:00:09
前言:  最近做的项目有用到定时器,每周只在特定时间运行一次,考虑到Spring Task的简单易用性,就果断选择了,我是配置在配置文件里面,没有用注解@Scheduled,推荐配置,注解虽方便,但更改需求时,需要代码重新编译。  定时任务配置其实很简单,不再赘述,自行度娘。关键 ...

前言:

  最近做的项目有用到定时器,每周只在特定时间运行一次,考虑到Spring Task的简单易用性,就果断选择了,我是配置在配置文件里面,没有用注解@Scheduled,推荐配置,注解虽方便,但更改需求时,需要代码重新编译。

  定时任务配置其实很简单,不再赘述,自行度娘。关键就是方法执行时机,Spring用cron字符串表达式来做设置。

服务器启动的时候立马执行一次

<task:scheduled ref="beanID" method="方法名" initial-delay="延迟毫秒"  fixed-delay="周期毫秒"  />

  注意:initial-delay和fixed-delay属性在spring 3.2版本以上有效,3.0就没有,并且3.2以上定时任务,服务器启动完成后会自动执行一次定时任务的,无需自己触发,如果有多个任务,initial-delay属性可以设置任务的等待时间,来解决任务的先后执行顺序。

 

Cron表达式:

 

Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式: 

 

Seconds Minutes Hours DayofMonth Month DayofWeek Year或 Seconds Minutes Hours DayofMonth Month DayofWeek

 

每一个域可出现的字符如下: Seconds:可出现", - * /"四个字符,有效范围为0-59的整数   Minutes:可出现", - * /"四个字符,有效范围为0-59的整数   Hours:可出现", - * /"四个字符,有效范围为0-23的整数   DayofMonth:可出现", -  *  / ? L W C"八个字符,有效范围为0-31的整数    Month:可出现", - * /"四个字符,有效范围为1-12的整数或JAN-DEc   DayofWeek:可出现", - * / ? L C #"四个字符,有效范围为1-7的整数或SUN-SAT两个范围。1表示星期天,2表示星期一, 依次类推 Year:可出现", - * /"四个字符,有效范围为1970-2099年 

 

每一个域都使用数字,但还可以出现如下特殊字符,它们的含义是: (1)*:表示匹配该域的任意值,假如在Minutes域使用*, 即表示每分钟都会触发事件。  

 

(2)?:只能用在DayofMonth和DayofWeek两个域。它也匹配域的任意值,但实际不会。因为DayofMonth和 DayofWeek会相互影响。例如想在每月的20日触发调度,不管20日到底是星期几,则只能使用如下写法: 13 13 15 20 * ?,  其中最后一位只能用?,而不能使用*,如果使用*表示不管星期几都会触发,实际上并不是这样。  

原标题:Spring定时器cron表达式详解

关键词:Spring

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录