項目需要用到定時器,雖然原來也使用過,但今天我重新搭建了一遍,順便複習一下
第一步:
應爲考慮到是spring 加載,首先想到的是對web.xml的修改,因爲想將定時器的配置作爲一個獨立的模塊,bean-quartz.xml
故修改配置如下:
<!-- 配置Spring -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:bean*.xml</param-value>
</context-param>
換成bean*.xml即可支持.
第二部:構建
bean-quartz.xml 內容如下:
<?xml version="1.0" encoding="UTF-8"?>
<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-2.0.xsd">
<!-- 註冊定時執行實體 -->
<!--定義自己的任務類--!>
<bean id="doTask" class="com.joker.synz.quartz.SynzCert"></bean>
<!-- ============================= 執行任務 ========================== -->
<!-- 註冊定時任務 -->
<bean id="doTaskJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 定時任務類 -->
<property name="targetObject" ref="doTask" />
<!-- 定時任務執行方法 -->
<property name="targetMethod">
<!--指定自己的任務類需要執行的方法--!>
<value>execute</value>
</property>
<!-- 同一任務在前一次執行未完成而Trigger時間又到時是否併發開始新的執行, 默認爲true. -->
<property name="concurrent" value="false" />
</bean>
<!-- 定義定時器 -->
<bean id="mainTrigger"
class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="doTaskJob" />
<!--cron表達式,指定任務執行的時間--!>
<property name="cronExpression"
value="${schedule.dotask.cronExpression}" />
</bean>
<!-- 註冊定時器 -->
<!--註冊,使它能夠被加載並且運行起來--!>
<bean id="schedulerFactoryBean" lazy-init="true" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref local="mainTrigger" />
</list>
</property>
</bean>
</beans>
其實很簡單,定義,註冊之後就可以使用了。
對於自己定義的類,無需實現任何接口或者繼承任何類,自己寫個類就可以。
package com.joker.synz.quartz;
import org.ezca.synz.quartz.thread.CertSYNZThtread;
/**
*
*
* @author GQ
*
*
*/
public class SynzCert {
public void execute(){
new Thread(new CertSYNZThtread()).start();
}
}
同時,需要jar包:
spring-context-support-3.0.5.RELEASE.jar
slf4j-api.jar和slf4j-log4j12.jar
log4j-1.2.14.jar。
關於cron表達式,請參考我轉載的一篇文章。