Spring定時器Quartz的簡單示例
阿新 • • 發佈:2019-02-06
專案開發中用到了quartz定時器,感覺很像javaJDK中的Timer類,但是不同的是,quartz提供的定時器可以按每天的固定時刻觸發,或者其他的時間。觸發時間比較人性化。
我自己寫了個小的專案,練練手。開發Spring的quartz定時器需要spring-context.jar和quartz.jar包,我最初沒有匯入quartz.jar包,導致報錯。
quartz的maven依賴如下:
<dependency> <groupId>org.opensymphony.quartz</groupId> <artifactId>quartz-all</artifactId> <version>1.6.1</version> </dependency>
定時器類不需要繼承自任何類。
package com.jd.service.meeting.worker;
public class MyWorker {
public void running(){
System.out.println("hello, world!");
}
}
然後在spring的配置檔案中配置這個定時器即可。
這個時間表達式指定了這個timer的觸發時間規則,我指定的是每10秒跑一次。<?xml version="1.0" encoding="GBK"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd" default-autowire="byName"> <bean id="helloWorker" class="com.jd.service.meeting.worker.MyWorker"></bean> <bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <bean class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail"> <bean class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="concurrent"> <value>false</value> </property> <property name="targetObject"> <ref bean="helloWorker" /> </property> <property name="targetMethod"> <value>running</value> </property> </bean> </property> <property name="cronExpression"> <value>0/10 * * * * ?</value> </property> </bean> </list> </property> </bean> </beans>
<property name="cronExpression">
<value>0/10 * * * * ?</value>
</property></span>
我的程式本地執行通過,大家配好jar包即可。
在另一篇文章中,介紹瞭如何僅僅使用Spring來開發定時器,十分簡潔,有興趣的可以看下(點選開啟連結)。