1、在springmvc-config.xml配置文件中加點東西
在xmlns中加一句
xmlns:task="http://www.springframework.org/schema/task"
在xsi中加如下代碼
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.2.xsd
再加一個
<task:annotation-driven/>
2、配置文件加好之后,新建一個類,代碼如下
@Component public class TimerTask { @Autowired private XXTZController xc; /** * 每個月一號凌晨一點執行test1 */ // 秒分時日 月周 @Scheduled(cron = "0 0 1 1 * ?") public void test1() { System.out.println("開始執行數據庫備份。。。。。。。。。。。。。。。。。。"); xc.copy(); } @Scheduled(cron = "0/5 * * * * ?")//每隔5秒隔行一次
public void test2(){ System.out.println("job2 開始執行");
} }
這個類加的位置不一樣會有不一樣的效果,把這個類放到Controller包下,當服務啟動時他會自動執行,放到其他地方則需要觸發才能執行。
3、上面涉及到了Cron表達式的問題,一個cron表達式有至少6個(也可能7個)有空格分隔的時間元素
按順序依次為 秒(0~59)鍾(0~59)時(0~23)天(1~31(但要注意一些特別的月份))月(1~12)周(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT)年(1970-2099)年(可選) 其中每個元素可以是一個具體值(1),也可以是一個連續區間(1-5),也可以是一個間隔時間(1-4/2)(/表示每隔2),也可以是一個列表(1,3,5),或通配符。 由於"月份中的日期"和"星期中的日期"這兩個元素互斥的,必須要對其中一個設置?.
“?”字符:表示不確定的值
“,”字符:指定數個值
“-”字符:指定一個值的范圍
“/”字符:指定一個值的增加幅度。n/m表示從n開始,每次增加m
“L”字符:用在日表示一個月中的最后一天,用在周表示該月最后一個星期X
“W”字符:指定離給定日期最近的工作日(周一到周五)
“#”字符:表示該月第幾個周X。6#3表示該月第3個周五
字段 允許值 允許的特殊字符
秒 0-59 , - * / 分 0-59 , - * / 小時 0-23 , - * / 日期 1-31 , - * ? / L W C 月份 1-12 或者 JAN-DEC , - * / 星期 1-7 或者 SUN-SAT , - * ? / L C # 年(可選) 留空, 1970-2099 , - * /
4、cron表達式實例:
每隔30秒執行一次:*/30 * * * * ?
每隔30分鍾執行一次:0 */30 * * * ?
每天23點執行一次:0 0 23 * * ?
每月1號凌晨1點執行一次:0 0 1 1 * ?
每月最后一天1點執行一次:0 0 1 L * ?
每周星期天凌晨1點實行一次:0 0 1 ? * L
每小時在26分、29分、33分執行一次:0 26,29,33 * * * ?
每天的0點、13點、18點、21點都執行一次:0 0 0,13,18,21 * * ?