Spring中的任务调度任务

在实际开发应用中,经常需要定时,或者重复执行一定的工作。比如为执行每日构件;定期生成企业报表,包括周、月、季度等;零售领域中门店的日结、月结等。
Quartz为任务调度提供了大量的功能,比如在合适执行何种任务。
一、需要定义一个类来继承QuartzJobBean,其中定义timeout属性,并且实现executeInternal()方法,抽象类QuartzJobBean用于定义待完成的任务本身。开发者通过继成 QuartzJobBean,即实现其中的executeInternal方法,就可以了,该方法用于定义待完成的任务。
public class LogJobBean extends QuartzJobBean{
private int timeout;
public void setTimeout(int timeout){
this.timeout=timeout;
}
Protected void executeInternal(JobExecutionContext arg0)throws JobExecutionException{
System.out.println(“create LogBean()……….”);
}
}
二、Spring的配置文件的配置如下:
Spring框架提供了SimpleTriggerBean来定义JobDetailBean的运行频率和初始化运行时机。通过jobDetail属性指定待执行的任务(比如logJob);通过repeatInterval属性指定任务执行的频率(比如两秒执行一次executeInternal方法);通过startDelay属性指定在初次执行任务前必须等待的时间;通过repartCount属性指定任务执行的次数。startDelay属性仅仅是给出了初次任务执行的相对时间,而不是绝对时间。比如商务9:30。如果需要精确到某时某刻,则需要使用Quartz的CronTriggerBean。
为启动SimpleTriggerBean,还需要配置SchedulerFactoryBean,即启动Scheduler器。通过triggers属性能够指定多有计划,即SimpleTriggerBean。
其中借助于jobClass属性指定任务本身,比如LogJobBean,借助于jobDataAsMap属性指定LogJobBean中定义的属性(属性必须提供set方法)。
<beans>
<bean name=”logJob” class=”org.springframework.scheduling.quartz.JobDetailBean”
<property name=”jobClass”>
<value>…….LogJobBean</value>
</property>
<property name=”jobDataAsMap”>
<map>
<entry key=”timeout”>
<value>10</value>
</entry>
</map>
</property>
</bean>
<bean id=”simpleTrigger” class=”org.springframework.scheduling.quartz.SimpleTriggerBean”>
<property name=”jobDetail”>
<ref bean=”logJob”/>
</property>
<!—第一次执行任务前,需要等待5秒钟-->
<property name=”startDelay”>
<value>5000</value>
</property>
<!—任务执行周期为2秒钟-->
<property name=”repeatIntegerval”>
<value>2000</value>
</property>
<!—执行次数-->
<property name=”repeatCount”>
<value>3</value>
</property>
</bean>
<bean id=”sfb” class=”org.springframework.scheduling.quartz.SchedulerFactoryBean”>
<property name=”triggers”>
<list>
<ref local=”simpleTrigger”/>
</list>
</property>
</bean>
</beans>
三、客户端的应用,借助于BeanFactory获得Scheduler后,安排的任务可以根据设定的运行规则执行。
public class LogJobBeanTest{
public static void main(String[] args){
Resource resource = new ClassPathResource(“appcontext.xml”);
BeanFactory factory = new XmlBeanFactory(resource);
Scheduler sfb=(Scheduler)factory.getBean(“sfb”);
try{
Thread.sleep(20000);
}catch(InterruptedException e){}
try{
sfb.shutdown();
}catch(SchedulerException se){}
}
}
本文引用地址:http://www.cnpoint.com/framwwork/2007/0816/content_5550.htm
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值