上面讲到的服务bean的两种不同实现方式,触发方法就用了spring默认提供的org.springframework.scheduling.quartz.SimpleTriggerBean,在很多时候,这种粗糙的触发是满足不了系统的开发的需求。下面来介绍另一种更灵活的触发方式org.springframework.scheduling.quartz.CronTriggerBean。 配置cronExpression由7部分组成(中间用空格隔开):秒 分 时 日 月 周 年,每一部分都可以精确的指定,也可以是范围,也是可指定是那几个数字,如:1,3,4,5 1-3 4 * * ? *,这个表达式的含义为:每天4时的第1到3分钟内,每分钟内的1,3,4,5执行指定的定时服务。在这里可以看到,定时服务执行了4×3=12次。?表示互斥
把上一个解发器改成CornTriggerBean:
<bean id="logjob2" class="quartz2.LogJob1"></bean>
<bean id="miJobDetail"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="logjob2" />
</property>
<property name="targetMethod">
<value>log</value>
</property>
</bean>
<bean id="trigger2"
class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<property name="jobDetail">
<ref bean="miJobDetail" />
</property>
<property name="startDelay">
<value>0</value>
</property>
<property name="repeatInterval">
<value>3000</value>
</property>
<property name="repeatCount">
<value>0</value>
</property>
</bean>
<bean id="corn1" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="miJobDetail"/>
</property>
<property name="cronExpression">
<value>0-30 * * * * ? *</value>
</property>
</bean>
<bean id="sfb2"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="trigger2" />
<ref bean="corn1"/>
</list>
</property>
</bean>spring配置文件装载时,就会执行2个触发器,一个是SimpleTriggerBean,另一个就是CornTriggerBean。在这个corntrigger中指定的含义为每分钟的前30秒执行这个定时服务
本文介绍了Spring框架中Quartz的CronTriggerBean配置方法及其灵活性。通过实例演示了如何使用cronExpression精确控制任务调度的时间,包括每分钟的前30秒等复杂场景。
1648

被折叠的 条评论
为什么被折叠?



