注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

一线天色 天宇星辰

天下武功,唯快不破

 
 
 

日志

 
 

作业调度与定时任务小结  

2011-05-14 15:52:40|  分类: 软件开发 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

工作过程中,很多时候我们需要用到用到作业调度(定时任务),尤其是企业级开发,经常用到如定时发邮件,定时发信息,每个多长时间备份一次数据等,自己去实现一套定时处理也不难,但是我们一般都用到企业级开源框架Spring,它为我们提供了几种实现作业调度的方法,我们一起来看下吧!

方法一:用JDK自己的类实现

package com.yhj.timetask;

import java.util.TimerTask;

public class MailTimeTask extends TimerTask {

    @Override

    public void run() {

       System.out.println("MailTimeTask is running...");

    }

}

然后用Spring的任务启动程序调度起来,这样Spring启动的时候就会启动

    <bean id="mailTimeTask" class="com.yhj.timetask.MailTimeTask">

    </bean>

    <bean id="scheduledTimeTask" class="org.springframework.scheduling.timer.ScheduledTimerTask">

       <property name="timerTask">

           <ref bean="mailTimeTask" />

       </property>

       <property name="period">

           <value>10000</value>

       </property>

    </bean>

方法二:使用Spring的Quartz调度器之QuartzJobBean

package com.yhj.quartz;

import org.quartz.JobExecutionContext;

import org.quartz.JobExecutionException;

import org.springframework.scheduling.quartz.QuartzJobBean;

public class MailQuartzJobBean extends QuartzJobBean{

    @Override

    protected void executeInternal(JobExecutionContext context)

           throws JobExecutionException {

       System.out.println("com.yhj.quartz.MailQuartzJobBean is doing ...");

    }

}

    <bean id="mailQuartzJob" class="org.springframework.scheduling.quartz.JobDetailBean">

       <property name="jobClass">

           <value>com.yhj.quartz.MailQuartzJobBean</value>

       </property>

<!--       <property name="jobDataAsMap">--> <!-- 可定次jobMap的参数 -->

<!--          <map>-->

<!--              <entry>-->

<!--                 <key></key>-->

<!--                 <ref/>-->

<!--              </entry>-->

<!--          </map>-->

<!--       </property>-->

    </bean>

    <bean id="simpleRepeatBean" class="org.springframework.scheduling.quartz.SimpleTriggerBean">

       <property name="jobDetail">

           <ref bean="mailQuartzJob"/>

       </property>

       <property name="startDelay">

           <value>10</value>

       </property>

       <property name="repeatInterval">

           <value>10</value>

       </property>

    </bean>

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">

       <property name="triggers">

           <list>

              <ref bean="simpleRepeatBean" />

           </list>

       </property>

    </bean>

方法三:使用Spring的Quartz调度器之CronTriggerBean

package com.yhj.quartz;

/**

 * @Description:Spring无依赖关系

 * @Author YHJ  create at 2011-5-13 下午03:11:31

 * @FileName com.yhj.quartz.MailQuiartzTimeTask.java

 */

public class MailQuiartzTimeTask {

    public void doSend (){

       System.out.println("MailQuiartzTimeTask is sending...");

    }

}

<bean id="methodInvokingJobDetail"

       class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">

       <property name="targetObject">

           <ref bean="mailQuiartzTimeTask" />

       </property>

       <property name="targetMethod">

           <value>doSend</value>

       </property>

    </bean>

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

       <property name="jobDetail">

           <ref bean="methodInvokingJobDetail" />

       </property>

       <property name="cronExpression">

           <value>1,10,20,30,40,50,59 * * * * ?</value>

       </property>

    </bean>

    <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">

       <property name="triggers">

           <list>

              <ref bean="cronTrigger" />

              <ref bean="simpleRepeatBean" />

           </list>

       </property>

    </bean>

    <bean id="mailQuiartzTimeTask" class="com.yhj.quartz.MailQuiartzTimeTask" />

这个示例用到了cron表达式,具体这个表达式怎么写呢?参见下图

 作业调度与定时任务小结 - 一线天色 天宇星辰 - 一线天色 天宇星辰

 

是不是感觉有了spring我们就很简单啊?没错,我们的目标就是让一切变的简单!(注意:以上使用第二种和第三种方法的时候需要另外引入commons-collections-3.1.jar包)


 你觉得本文对你帮助吗?  

票数:9 投票时间:2011-05-14 15:52:45 到 2014-12-31 23:00:00

  •     9(100%)
  •     0(0%)
  •     0(0%)
  •     0(0%)
  •     0(0%)
查看参与情况
编辑投票|删除投票

最新投票|博友投票

      评论这张
     
    阅读(62705)| 评论(2)
    推荐 转载

    历史上的今天

    评论

    <#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
     
     
     
     
     
     
     
     
     
     
     
     
     
     

    页脚

    网易公司版权所有 ©1997-2017