1.基于XML的定時器
1.1 Spring的XML文件片段內容
方法1:
<!-- 定時器開關-->
<task:scheduled-tasks>
? ? ? ? ?<!-- 定時任務(可以有多個定時任務),和執行時間,每5秒執行一次 ?-->
? ? ? ? ? <task:scheduled ref="myTask" method="printSomeThing" cron="*/5 * * * * ?"></>
</task:scheduled-tasks>
<!-- 定時任務Bean所在位置 -->
<context:component-scan base-package="com.yuxiSofterware.task"/>
方法2:
<bean id="demoTask" class="com.yuxiSofterware.task.DemoTask"/>
<bean id="BuildTask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="demoTask"/>
<property name="targetMethod" value="printSomeThing" />
<property name="concurrent" value="false" />
</bean>
<bean id="BuildTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="BuildTask"/>
<property name="cronExpression" value="0/5 0 * * * ?" />
</bean>
1.2 Bean類片段內容
package com.yuxiSofterware.task;
/**
?* 基于XML的Spring定時器
* @author yuxiSofterware
*/
public class DemoTask {
public void printSomeThing() {
? ? ? ? ? System.out.println("XML定時器觸發。");
}
}
1.3 編寫main方法,解析Spring的XML文件,定時器就會按時觸發,編寫過程略。
2. 基于注解的Spring定時器
package com.yuxiSofterware.task;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
/**
* 基于注解的Spring定時器
* @author yuxiSofterware
*/
@Component
public class DemoTask {
?/**
?* 定時任務,每五秒鐘執行一次
?*/
@Scheduled(corn="*/5 * * * * ?")
public voidprintSomeThing() {
System.out.println("XML定時器觸發。");
}
}
3. 關于定時器,定時任務時間的說明
定時表達式的格式:秒 分 時 日 月 周 年(可選)。
字段名 ? ? ? ? ? ? ? ? 允許的值 ? ? ? ? ? ? ? ? ? ? ? ?允許的特殊字符
秒 ? ? ? ? ? ? ? ? ? ? ? ? 0-59 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? , - * /
分 ? ? ? ? ? ? ? ? ? ? ? ? 0-59 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? , - * /
小時 ? ? ? ? ? ? ? ? ? 0-23 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? , - * /
日 ? ? ? ? ? ? ? ? ? ? ? ? 1-31 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? , - * ? / L W C
月 ? ? ? ? ? ? ? ? ? ? ? ? 1-12 or JAN-DEC ? ? ? ? ?, - * /
周幾 ? ? ? ? ? ? ? ? ? ? 1-7 or SUN-SAT ? ? ? ? ? ?, - * ? / L C #
年 (可選字段) ? ? empty, 1970-2099 ? ? ?, - * /
“?”字符:表示不確定的值
“,”字符:指定數個值
“-”字符:指定一個值的范圍
“/”字符:指定一個值的增加幅度。n/m表示從n開始,每次增加m
“L”字符:用在日表示一個月中的最后一天,用在周表示該月最后一個星期X
“W”字符:指定離給定日期最近的工作日(周一到周五)
“#”字符:表示該月第幾個周X。6#3表示該月第3個周五