首页 > 代码库 > spring启动quartz定时器

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日