zoukankan      html  css  js  c++  java
  • spring启动quartz定时器

    在很多中经常要用到定时任务,quartz是定时器中比较好用的,在Spring中使用quartz是很容易的事情,首先在spring的applicationContext.xml文件中增加如下配置:

    <!-- quartz定时器定义 -->
    
    <!-- 要调用的工作类,即任务处理类 -->
    
    <bean id="quartzJob" class="com.mdnet.travel.core.model.QuartzJob"></bean>
    
    <!-- 定义调用对象和调用对象的方法 -->
    
    <bean id="jobtask"
    
    class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    
    <!-- 调用的类 -->
    
    <property name="targetObject">
    
    <ref bean="quartzJob" />
    
    </property>
    
    <!-- 调用类中的方法 -->
    
    <property name="targetMethod">
    
    <value>work</value>
    
    </property>
    
    </bean>
    
    <!-- 定义触发时间 和下面的CronTrigger类型选其一   -->
    
    <bean id="doTime" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
    
    <property name="startDelay">
    
    <value>1000</value>
    
    </property>
    
    <property name="repeatInterval">
    
    <value>3000</value>
    
    </property>
    
    <property name="jobDetail">
    
    <ref local="jobtask" />
    
    </property>
    
    </bean>
    
    <!-- CronTigger类型 -->
    
    <!-- <bean id="doTime" class="org.springframework.scheduling.quartz.CronTriggerBean"> 
    
    <property name="jobDetail"> <ref bean="jobtask" /> </property> <property 
    
    name="cronExpression"> <value>2</value> </property> </bean> -->
    
    <!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序,随项目一起启动  -->
    
    <bean id="startQuertz" lazy-init="false" autowire="no"
    
    class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    
    <property name="triggers">
    
    <list>
    
    <ref bean="doTime" />
    
    </list>
    
    </property>
    
    </bean>

    其中bean startQuertz是quartz的入口,该bean参考bean doTime, doTime bean中描述定时器参数,像循环周期等,在doTime bean中参考jobtask bean,jobtask bean指定了实际处理定时任务的quartzJob bean,quartzJob中指定了具体定时器处理类和具体的处理方法。

    在本例中启动的简单定时器,复杂定时器可以参见配置中CrinTrigger部分。

    本类中定时器的具体处理类是com.mdnet.travel.core.model.QuartzJob,在com.mdnet.travel.core.model.QuartzJob中work是定时任务的处理方法,具体任务处理类如下:

    public class QuartzJob {
        @Resource(name = ISMSService.SERVICE_NAME)
        protected ISMSService smsService;
        public static int quartzCount;
     
        public boolean isNumeric(String str) {
            Pattern pattern = Pattern.compile("[0-9]*");
            Matcher isNum = pattern.matcher(str);
            if (!isNum.matches()) {
                return false;
            }
            return true;
        }
     
        public void work() {
            //todo 定时任务处理方法,添加你的任务处理代码
     
        }
    }

    祝顺利,德安工作室 2014年6月26日

  • 相关阅读:
    在vim中不能用鼠标右键粘贴和跨系统复制粘贴的解决办法
    2、cat
    OTG相关知识
    vim报错E325(出现.swp文件)地解决方法
    Linux命令1
    数组与集合
    if switch for while
    各类运算符
    java基础概念
    基于对话框的程序隐藏于托盘(二)
  • 原文地址:https://www.cnblogs.com/liughost/p/3809539.html
Copyright © 2011-2022 走看看