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日

你可能感兴趣的:(spring)