天天看點

Spring3.0.5 +Quartz1.8.6 內建定時任務,通過配置xml 檔案實作

概述:spring-context-support 為友善建立Quartz定時任務,提供:MethodInvokingJobDetailFactoryBean(定時任任務工廠)、 CronTriggerBean(任務排程計時器)、SchedulerFactoryBean(排程觸發器),友善spring容器的注入。

maven 依賴:

<!--spring-context-support 第三方內建 -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context-support</artifactId>
			<version>3.0.5.RELEASE</version>
		</dependency>
		<!--內建定時任務架構 quartz -->
		<dependency>
			<groupId>org.quartz-scheduler</groupId>
			<artifactId>quartz</artifactId>
			<version>1.8.6</version>
		</dependency>
           

步驟:

建立定時任務實體對象:

package com.digipower.erms.time.task;

/**
 * LogMoveTask: 定時遷移6個月之前的日志檔案資訊(excel檔案存儲+日志資訊删除)
 * @author zzg
 *
 */
public class LogMoveTask {
	
	public void asynchronizeTask(){
		System.out.println("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.xsd">
	
	<!-- 定時任務的工作Bean -->  
    <bean id="quartzJob" class="com.digipower.erms.time.task.LogMoveTask" />  
      
    <!-- 定義生成工作對象的工廠,并為工廠設定目标對象targetObject屬性、目标對象的工作方法targetMethod屬性 -->  
    <bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">  
        <property name="targetObject" ref="quartzJob" />  
        <property name="targetMethod">  
            <value>asynchronizeTask</value>  
        </property>  
        <property name="concurrent" value="false" />  
    </bean>  
      
    <!-- 任務排程計時器,進行定時設定。CronTriggerBean能進行非常精确的定時設定 -->  
    <bean id="cronQuartzClock" class="org.springframework.scheduling.quartz.CronTriggerBean">  
        <property name="jobDetail" ref="jobDetail" />  
        <!-- cron表達式 -->  
        <property name="cronExpression">  
            <!--   0 0 */2 * * ? 每兩小時、整點觸發 -->  
            <!--   0 0/2 * * * ? 每兩分鐘  -->  
            <!--   0/5 * * * * ? 每五秒鐘  -->  
            <!--   0 15 10 * * ? 每天Y分X點觸發  -->  
            <!-- 每月最後一日的23:00觸發   -->
            <value>0 0 23 L * ? </value>  
        </property>  
    </bean>  
      
    <!-- 排程任務觸發器,啟動定時任務-->  
    <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  
        <property name="triggers">  
            <list>  
                <ref bean="cronQuartzClock" />  
            </list>  
        </property>  
    </bean>  
	
	
</beans>