【转】spring 定时器 表达式 org.springframework.scheduling.quartz.CronTriggerBean

lisongchuang 2013-04-08

一个Quartz的CronTrigger表达式分为七项子表达式,其中每一项以空格隔开,从左到右分别是:秒,分,时,月的某天,月,星期的某天,年;其中年不是必须的,也就是说任何一个表达式最少需要六项!

例:0012?*WED表示每个星期三的12点执行,这里没有“年”这项!

字段名(项)必须值范围特殊字符

秒是0-59,-*/

分是0-59,-*/

时是0-23,-*/

月的某天是1-31,-*?/LW

月是1-12orJAN-DEC,-*/

星期的某天是1-7orSUN-SAT,-*?/L#

年否empty,1970-2099,-*/

先看示列:"00/308-105,20*?"表示“每个月的5日和20日的8:00,8:30,9:00,9:30,10:00,10:30”

字符解释:

,:与,表式","两边的值都是需要执行的时间,如上例"5,20",每个月的5日与20日。

-:表示值的范围,如上例"8-10",从8点开始到10结束,包括8点与10点。

*:表式任意可合法的值,如上例"*"是处于月份的字段,所以代表1-12中的任意值,所以上例是指“每个月”。

/:增量,如上例是指从0分开始,每过30分钟取一次值。如果换成"5/8"就是从第5钟开始每过8分钟取一次值:8:05,8:13,8:21,8:29等等

?:不指定值,就是“我也不知道”的意思,只能出现在“月的某天,星期的某天”项中。在什么情况下用呢?如上例如果指定值为星期一,那么可能会出现如4月5日不是星期一,这里就是不对应,有冲突,所以指定为"?",也就是说我也不知道是星期几,只要是5日与20日就行了,至于是星期几我才不管呢!

L:最后的,last的意思,只能出现在“月的某天,星期的某天”项中。表示当前月或当前星期的最后一天,注意的是星期的最后一天为星期六。

W:月中最接近指定日期的普通日(星期一到星期五),只能出现在“月的某天”,如"15W"就是说当前月最接近15日的普通日,如果当月的15是星期三就是星期三,如果当月的15是星期六那么就是昨天也就是星期五,如果当月的15是星期天则为第二天也就是星期一。

#:当前月的第N个星期X日,只能出现在“星期的某天”项中。如"6#3"就是说当前月的第三个星期五,注意"1-7",1=星期天,2=星期一等等。

附上我的实际项目中的配置代码:

1.<!--任务调试配置-->2.<beanid="BetchRemoveSMSTask"3.class="ht.gisoa.work.BetchMoveSMSTask">4.<propertyname="sessionFactory">5.<refbean="sessionFactory"/>6.</property>7.</bean>8.

9.<beanid="StatisticRouteInfoTask"10.class="ht.gisoa.work.StatisticRouteInfoTask">11.<propertyname="routeinfoDAO">12.<refbean="CRouteinfoDAO"/>13.</property>14.<propertyname="resourceshareDAO">15.<refbean="CResourceshareDAO"/>16.</property>17.<propertyname="daoUtil">18.<refbean="DaoUtil"/>19.</property>20.<propertyname="resourcestatinfoDAO">21.<refbean="ResourcestatinfoDAO"/>22.</property>

23.</bean>

24.

25.<beanid="StatisticRouteInfoTaskjobDetail"26.class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">27.<propertyname="targetObject"ref="StatisticRouteInfoTask"/>28.<propertyname="targetMethod"value="doWork"/>29.</bean>30.<beanid="jobDetail"31.class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">32.<propertyname="targetObject"ref="BetchRemoveSMSTask"/>33.<propertyname="targetMethod"value="doWork"/>34.</bean>

35.36.<beanid="simpleTrigger"37.class="org.springframework.scheduling.quartz.SimpleTriggerBean">38.<propertyname="repeatInterval"value="5000"/>39.<propertyname="jobDetail"ref="jobDetail"/>40.<propertyname="startDelay"value="1000"/>41.</bean>42.43.<beanid="cronTrigger"44.class="org.springframework.scheduling.quartz.CronTriggerBean">45.<propertyname="jobDetail"ref="jobDetail"/>46.<propertyname="cronExpression"value="0*18**?"/>47.</bean>48.<beanid="statisticRouteInfoTaskCronTrigger"49.class="org.springframework.scheduling.quartz.CronTriggerBean">50.<propertyname="jobDetail"ref="StatisticRouteInfoTaskjobDetail"/>51.<propertyname="cronExpression"value="0*18**?"/>52.</bean>

53.<bean54.class="org.springframework.scheduling.quartz.SchedulerFactoryBean">55.<propertyname="triggers">56.<list>57.<refbean="cronTrigger"/>58.<refbean="statisticRouteInfoTaskCronTrigger"/>59.<!--<refbean="simpleTrigger"/>-->60.</list>61.</property>62.</bean>63.<!--任务调试配置结束-->

相关推荐