您的位置:首页 > 编程语言 > Java开发

在Spring中使用Quartz进行任务调度(4)

2012-09-14 21:04 811 查看
创建Trigger Quartz中另一个重要的组件就是Trigger,Spring按照相似的思路分别为SimpleTrigger和CronTrigger提供了更具Bean风格的SimpleTriggerBean和CronTriggerBean扩展类,通过这两个扩展类更容易在Spring中以Bean的方式配置Trigger。 SimpleTriggerBean 默认情况下,通过SimpleTriggerBean配置的Trigger名字即为Bean的名字,并属于默认组Trigger组。SimpleTriggerBean在SimpleTrigger的基础上,新增了以下属性: ● jobDetail:对应的JobDetail; ● beanName:默认为Bean的id名,通过该属性显式指定Bean名称,它对应Trigger的名称; ● jobDataAsMap:以Map类型为Trigger关联的JobDataMap提供值; ● startDelay:延迟多少时间开始触发,单位为毫秒,默认为0; ● triggerListenerNames:类型为String[],指定注册在Scheduler中的TriggerListener名称,以便让这些监听器对本触发器的事件进行监听。 下面的实例使用SimpleTriggerBean定义了一个Trigger,该Trigger和jobDetail相关联,延迟10秒后启动,时间间隔为20秒,重复执行100次。此外,我们还为Trigger设置了JobDataMap数据:
<bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">


<property name="jobDetail" ref="jobDetail" />


<property name="startDelay" value="1000" />


<property name="repeatInterval" value="2000" />


<property name="repeatCount" value="100" />


<property name="jobDataAsMap"> ①


<map>


<entry key="count" value="10" />


</map>


</property>


</bean>

需要特别注意的是,①处配置的JobDataMap是Trigger的JobDataMap,任务执行时必须通过以下方式获取配置的值:
package com.baobaotao.quartz;


public class MyJob implements StatefulJob {


public void execute(JobExecutionContext jctx) throws JobExecutionException {


Map dataMap = jctx.getTrigger().getJobDataMap();①获取Trigger的JobDataMap


String count = dataMap.get("count");


dataMap.put(“count”,”30”) ② 对JobDataMap的更改不会被持久,不影响下次的执行


}


}
    CronTriggerBean     CronTriggerBean扩展于CronTrigger,触发器的名字即为Bean的名字,保存在默认组中。在CronTrigger的基础上,新增的属性和SimpleTriggerBean大致相同,配置的方法也和SimpleTriggerBean相似,下面给出一个简单的例子:
<bean id="checkImagesTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"><property name="jobDetail" ref="jobDetail "/><property name="cronExpression" value="0/5 * * * * ?"/></bean>

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: