1. 程式人生 > >Spring3.1.2使用quartz-2.2.1做的web定時器

Spring3.1.2使用quartz-2.2.1做的web定時器

最近在做專案時用到了定時器,使用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/