Spring3.1.2使用quartz-2.2.1做的web定時器
阿新 • • 發佈:2019-01-28
最近在做專案時用到了定時器,使用Spring自帶的監聽器無法做到每週五或者每月每月月底定時執行,最終選擇使用quartz做定時任務
在Spring xml配置檔案中新增一下程式碼就可以了
然後在對應的類中編寫要執行的方法<!-- 全部定義到內部bean中,可以新增多個任務 --> <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <!-- 排程任務01 周統計--> <bean class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <property name="jobDetail"> <bean class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <!-- 執行類 --> <property name="targetObject"> <ref bean="taskWork" /> </property> <!-- 類中要定時執行的方法 --> <property name="targetMethod"> <value>GetCountWeek</value> </property> </bean> </property> <property name="cronExpression" value=" 0 0 18 ? * 1 "/> </bean> <!-- 排程任務02 月統計--> <bean class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <property name="jobDetail"> <bean class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject"> <ref bean="taskWork" /> </property> <property name="targetMethod"> <value>GetCountMonth</value> </property> </bean> </property> <property name="cronExpression" value="0 59 18 L * ?"/> </bean> </list> </property> </bean> <!-- 配置任務所在的類 --> <bean id="taskWork" class="com.yuan.utils.SendCountOfWeek" />
public class SendCountOfWeek {
//周統計
public void GetCountWeek(){
System.out.println("這是第一個方法");
}
//月統計
public void GetCountMonth(){
System.out.println("這是第二個方法");
}}
剛開始配置
bean class=org.springframework.scheduling.quartz.CronTriggerBean會在啟動時報錯,後來查詢將其改為org.springframework.scheduling.quartz.CronTriggerFactoryBean
之後tomcat正常啟動
cron表示式查詢:http://cron.qqe2.com/