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日

  • 相关阅读:
    PAT A1017 Queueing at Bank [硬核模拟]
    PAT A1105 Spiral Matrix [硬核模拟]
    PAT A1153 Decode Registration Card of PAT [排序模拟]
    PAT A1139 First Contact [图]
    jquery的animate动画
    wordpress建站过程5——footer.php
    wordpress建站过程4——index.php
    wordpress建站过程3——header.php
    HTML中加载flash方法
    轮播图的原理
  • 原文地址:https://www.cnblogs.com/liughost/p/3809539.html
Copyright © 2011-2022 走看看