一、在springmvc-config.xml配置文件中加點東西spring
在xmlns中加一句數據庫
xmlns:task="http://www.springframework.org/schema/task"
在xsi中加以下代碼mvc
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.2.xsd
再加一個spa
<task:annotation-driven/>
二、配置文件加好以後,新建一個類,代碼以下code
@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包下,當服務啓動時他會自動執行,放到其餘地方則須要觸發才能執行。xml
三、上面涉及到了Cron表達式的問題,一個cron表達式有至少6個(也可能7個)有空格分隔的時間元素blog
按順序依次爲 秒(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 , - * /
四、cron表達式實例:io
每隔30秒執行一次:*/30 * * * * ?class
每隔30分鐘執行一次:0 */30 * * * ?test
天天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 * * ?