首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

用spring兑现定时调度

2012-10-08 
用spring实现定时调度spring有两种执行定制调度的机制一种是使用JDK 的TimerTask,在spring里面配置类似Tim

用spring实现定时调度

spring有两种执行定制调度的机制

一种是使用JDK 的TimerTask,在spring里面配置类似Timer的时间配置,但是这种方法不能准确设置一个起始时间。

另一种是使用spring + quartz实现,,当有任务触发时,spring会去调用quartzJob的execute()方法

这里使用第二种方法做一个实例

?

?

?

定时调度的任务执行类,需要导入一个quartz.jar包,去网上可以下载一个

----------------------------------------------------------

import org.springframework.scheduling.quartz.*;

import com.huatech.statistic.data.StatisticService;

?

public class StatTesk extends QuartzJobBean{
?
????private StatisticService statisticService;
????

??? public void setStatisticService(StatisticService statisticService) {
??????? this.statisticService = statisticService;
??? }

??? //这个函数是调度任务执行的入口
??? protected void executeInternal(JobExecutionContext jobExecutionContext) throws org.quartz.JobExecutionException {

??????? //在这里面可以写需要定时执行的代码

??? }

}

----------------------------------------------------------?

?

?

spring配置文件里面只需要配置如下几个主要参数就可以了:

----------------------------------------------------------

<beans>

??? <bean id="reportJob" />
??????????????? </entry>
??????????? </map>
?????? </property>
???? </bean>


???? <bean id="simpleReportTrigger" />
???????? </property>

???????? <!--这儿配置起始执行需要延迟多长时间-->
???????? <property name="startDelay">
?????????????<value>1000</value>
???????? </property>

???????? <!--这儿配置每次执行的间隔时间-->
???????? <property name="repeatInterval">
???????????? <value>2000</value>
???????? </property>
????? </bean>

??????<!-- 配置一个触发器 -->
????? <bean id="cronReportTrigger" />
????????? </property>

????????? <!--这儿可以准确配置任务执行的时间,如下面为每天的21:01:00执行任务-->
????????? <property name="cronExpression">
????????????? <value>0 1 21 * * ?</value>
????????? </property>
????? </bean>

????? <!-- 添加上面配置好的触发器,可添加多个 -->
????? <bean />
????????????? </list>
????????? </property>
????? </bean>

</beans>

---------------------------------------------------------

?

?

下面是配置触发器触发时间的一些例子:

"0 0 12 * * ?"?????? 每天中午12点触发
"0 15 10 ? * *"?????? 每天上午10:15触发
"0 15 10 * * ?"?????? 每天上午10:15触发
"0 15 10 * * ? *"?????? 每天上午10:15触发
"0 15 10 * * ? 2005"?????? 2005年的每天上午10:15触发
"0 * 14 * * ?"?????? 在每天下午2点到下午2:59期间的每1分钟触发
"0 0/5 14 * * ?"?????? 在每天下午2点到下午2:55期间的每5分钟触发
"0 0/5 14,18 * * ?"?????? 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
"0 0-5 14 * * ?"?????? 在每天下午2点到下午2:05期间的每1分钟触发
"0 10,44 14 ? 3 WED"?????? 每年三月的星期三的下午2:10和2:44触发
"0 15 10 ? * MON-FRI"?????? 周一至周五的上午10:15触发
"0 15 10 15 * ?"?????? 每月15日上午10:15触发
"0 15 10 L * ?"?????? 每月最后一日的上午10:15触发
"0 15 10 ? * 6L"?????? 每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6L 2002-2005"?????? 2002年至2005年的每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6#3"?????? 每月的第三个星期五上午10:15触发

热点排行