现在的位置: 首页 > 综合 > 正文

Spring 定时任务Spring–quartz中cronExpression配置说明

2018年01月28日 ⁄ 综合 ⁄ 共 1956字 ⁄ 字号 评论关闭

先附上一个定时计划的配置,已供以后需要来Copy....偷笑

<bean name="taskJob" class="com.abc.def.task.XxxxxxxTask" />

     
<bean id="methodInvokingJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
       <property name="targetObject">
           <ref bean="taskJob" />
       </property>
       <property name="targetMethod">
           <value>run</value>
       </property>
</bean>

<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">

        <!-- 这里不可以直接在属性jobDetail中引用taskJob,因为他要求的是一个jobDetail类型的对象,所以我们得通过MethodInvokingJobDetailFactoryBean来转一下 -->
       <property name="jobDetail">
           <ref bean="methodInvokingJobDetail" />
       </property>
       <!-- 每天的0点到23点(包括23)每隔2分钟触发,具体说明见附录 -->
       <property name="cronExpression">
           <value>0 0/2 00-23 * * ?</value>

       </property>

 </bean>

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
       <!-- 添加触发器 -->
       <property name="triggers">
           <list>
               <ref local="cronTrigger" />
           </list>
       </property>
</bean>

=============================================================================

==============================进入正题========================================

=============================================================================

上面的 

<property name="cronExpression">
     <value>0 0/2 00-23 * * ?</value>

</property>

分别对应

秒 分 时 日期  月份 星期 (年份可空)

字段   允许值   允许的特殊字符
  0-59   , - * /
  0-59   , - * /
小时   0-23   , - * /
日期   1-31   , - * ? / L W C
月份   1-12 或者 JAN-DEC   , - * /
星期   1-7 或者 SUN-SAT   , - * ? / L C #
年(可选)   留空, 1970-2099   , - * /

a)“*”字符被用来指定所有的值。如:”*“在分钟的字段域里表示“每分钟”。

b)“?”字符只在日期域和星期域中使用。它被用来指定“非明确的值”。当你需要通过在这两个域中的一个来指定一些东西的时候,它是有用的。看下面的例子你就会明白。 
月份中的日期和星期中的日期这两个元素时互斥的一起应该通过设置一个问号(?)来表明不想设置另一个字段。

c)“-”字符被用来指定一个范围。如:“10-12”在小时域意味着“10点、11点、12点”。

d)“,”字符被用来指定另外的值。如:“MON,WED,FRI”在星期域里表示”星期一、星期三、星期五”。

e)L是‘last’的省略写法可以表示日期和星期域,但在两个字段中的意思不同,例如day-of-month域中表示一个月的最后一天,
如果在day-of-week域表示‘7’或者‘SAT’,如果在day-of-week域中前面加上数字,它表示一个月的最后几天,例如‘6L’就表示一个月的最后一个
星期五。

f)“#”字符只能用在星期域中,1#2表示月份中的第2个星期日,3#1表示月份中的第一个星期二,7#4表示月份中的第4个星期六。

g)"/"是个特殊的用法,如1/2分钟表示从第1分钟开始每隔2分钟,0/5分钟表示从0分钟开始每隔5分钟。


抱歉!评论已关闭.