- package cn.xy.util;
- import java.util.TimerTask;
- publicclass MyThreadtimer extends TimerTask{
- @Override
- publicvoid run() {
- System.out.println("線程方式定時測試");
- }
- }
和其餘的javabean同樣,此類須要在配置文件中註冊,另外爲了分模塊管理applicationContext.xml文件,將專門的定時任務的配置單獨放在一個配置文件中,完成後在applicationContext.xml中導入便可Timer.xmljava
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
- <beans>
- <!-- 週期執行的類註冊 -->
- <bean id="mythreadtimer" class="cn.xy.util.MyThreadtimer"
- abstract="false" singleton="true" lazy-init="default"
- autowire="default" dependency-check="default">
- </bean>
- <!-- 使用spring的時間調度管理 -->
- <!-- 使用此管理器必須導入的spring庫爲spring misc 庫 -->
- <bean id="scheduledtimertask"
- class="org.springframework.scheduling.timer.ScheduledTimerTask"
- abstract="false" singleton="true" lazy-init="default"
- autowire="default" dependency-check="default">
- <!-- 週期執行的任務能夠是list指定的多個線程 -->
- <property name="timerTask">
- <ref bean="mythreadtimer" />
- </property>
- <!-- 執行週期 thread中的sleep -->
- <property name="period">
- <value>10000</value>
- </property>
- <!-- 在容器啓動完成後的延遲執行時間 -->
- <property name="delay">
- <value>5000</value>
- </property>
- </bean>
- <!-- 相似事物管理同樣定時任務也要委託給spring的定時工廠進行管理 -->
- <bean id="timerFactory"
- class="org.springframework.scheduling.timer.TimerFactoryBean"
- abstract="false" singleton="true" lazy-init="default"
- autowire="default" dependency-check="default">
- <property name="scheduledTimerTasks">
- <list>
- <ref bean="scheduledtimertask" />
- </list>
- </property>
- </bean></beans>
- package cn.xy.util;
- import java.util.Date;
- import org.quartz.JobExecutionContext;
- import org.quartz.JobExecutionException;
- import org.springframework.scheduling.quartz.QuartzJobBean;
- publicclass Mytimerservice extends QuartzJobBean {
- @Override
- protectedvoid executeInternal(JobExecutionContext arg0)
- throws JobExecutionException {
- System.out.println(new Date().toString()+"定時任務測試");
- }
- }
配置定時任務的xml文件servicetimer.xmlspring
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
- <beans>
- <bean id="jobdetailbean"
- class="org.springframework.scheduling.quartz.JobDetailBean"
- abstract="false" singleton="true" lazy-init="default"
- autowire="default" dependency-check="default">
- <property name="jobClass">
- <value>cn.xy.util.Mytimerservice</value>
- </property>
- <!-- 注入任務類所須要的bean
- <property name="jobDataAsMap">
- <map>
- <entry key="topimgop">
- <ref bean="topimgop"/>
- </entry>
- </map>
- </property>
- -->
- </bean>
- <!-- 定時器註冊 -->
- <bean id="servicetrigger"
- class="org.springframework.scheduling.quartz.CronTriggerBean"
- abstract="false" singleton="true" lazy-init="default"
- autowire="default" dependency-check="default">
- <!-- 任務的詳細信息 -->
- <property name="jobDetail">
- <ref bean="jobdetailbean" />
- </property>
- <!-- 定時執行的時間 上午11點07分-->
- <property name="cronExpression">
- <value>0 20 11 * * ?</value>
- </property>
- </bean>
- <!-- 定時任務工廠註冊 -->
- <bean id="schedulerFactory"
- class="org.springframework.scheduling.quartz.SchedulerFactoryBean"
- abstract="false" singleton="true" lazy-init="default"
- autowire="default" dependency-check="default">
- <property name="triggers">
- <list>
- <ref bean="servicetrigger" />
- </list>
- </property>
- </bean></beans>
- 附表:
- "0 0 12 * * ?" 天天中午12點觸發
- "0 15 10 ? * *" 天天上午10:15觸發
- "0 15 10 * * ?" 天天上午10:15觸發
- "0 15 10 * * ? *" 天天上午10:15觸發
- "0 15 10 * * ? 2005" 2005年的天天上午10:15觸發
- "0 * 14 * * ?" 在天天下午2點到下午2:59期間的每1分鐘觸發
- "0 0/5 14 * * ?" 在天天下午2點到下午2:55期間的每5分鐘觸發
- "0 0/5 14,18 * * ?" 在天天下午2點到2:55期間和下午6點到6:55期間的每5分鐘觸發
- "0 0-5 14 * * ?" 在天天下午2點到下午2:05期間的每1分鐘觸發
- "0 10,44 14 ? 3 WED" 每一年三月的星期三的下午2:10和2:44觸發
- "0 15 10 ? * MON-FRI" 週一至週五的上午10:15觸發
- "0 15 10 15 * ?" 每個月15日上午10:15觸發
- "0 15 10 L * ?" 每個月最後一日的上午10:15觸發
- "0 15 10 ? * 6L" 每個月的最後一個星期五上午10:15觸發
- "0 15 10 ? * 6L 2002-2005" 2002年至2005年的每個月的最後一個星期五上午10:15觸發
- "0 15 10 ? * 6#3" 每個月的第三個星期五上午10:15觸發