使用spring @Scheduled註解執行定時任務:spring
運行!!!網站
關於Cron表達式(轉載).net
表達式網站生成:blog
http://cron.qqe2.com/ 直接點擊io
做者:http://blog.csdn.net/supingemail/article/details/22274279ast
cronExpression定義時間規則,Cron表達式由6或7個空格分隔的時間字段組成:秒 分鐘 小時 日期 月份 星期 年(可選);email
字段 容許值 容許的特殊字符
秒 0-59 , - * /
分 0-59 , - * /
小時 0-23 , - * /
日期 1-31 , - * ? / L W C
月份 1-12 , - * /
星期 1-7 , - * ? / L C #
年 1970-2099 , - * /定時任務
解析:
0/5 * * * * ? : 每5秒執行一次qq
「*」字符被用來指定全部的值。如:"*"在分鐘的字段域裏表示「每分鐘」。
「?」字符只在日期域和星期域中使用。它被用來指定「非明確的值」。當你須要經過在這兩個域中的一個來指定一些東西的時候,它是有用的。看下面的例子你就會明白。
月份中的日期和星期中的日期這兩個元素時互斥的一塊兒應該經過設置一個問號來代表不想設置那個字段。集合
「-」字符被用來指定一個範圍。如:「10-12」在小時域意味着「10點、11點、12點」。
「,」字符被用來指定另外的值。如:「MON,WED,FRI」在星期域裏表示」星期1、星期3、星期五」。
「/」字符用於指定增量。如:「0/15」在秒域意思是每分鐘的0,15,30和45秒。「5/15」在分鐘域表示每小時的5,20,35和50。 符號「*」在「/」前面(如:*/10)等價於0在「/」前面(如:0/10)。記住一條本質:表達式的每一個數值域都是一個有最大值和最小值的集合,如: 秒域和分鐘域的集合是0-59,日期域是1-31,月份域是1-12。字符「/」能夠幫助你在每一個字符域中取相應的數值。如:「7/6」在月份域的時候只 有當7月的時候纔會觸發,並非表示每一個6月。
L是‘last’的省略寫法能夠表示day-of-month和day-of-week域,但在兩個字段中的意思不一樣,例如day-of- month域中表示一個月的最後一天。若是在day-of-week域表示‘7’或者‘SAT’,若是在day-of-week域中前面加上數字,它表示 一個月的最後幾天,例如‘6L’就表示一個月的最後一個星期五。
字符「W」只容許日期域出現。這個字符用於指定日期的最近工做日。例如:若是你在日期域中寫 「15W」,表示:這個月15號最近的工做日。因此,若是15號是週六,則任務會在14號觸發。若是15好是週日,則任務會在週一也就是16號觸發。若是 是在日期域填寫「1W」即便1號是週六,那麼任務也只會在下週一,也就是3號觸發,「W」字符指定的最近工做日是不可以跨月份的。字符「W」只能配合一個 單獨的數值使用,不可以是一個數字段,如:1-15W是錯誤的。
「L」和「W」能夠在日期域中聯合使用,LW表示這個月最後一週的工做日。
字符「#」只容許在星期域中出現。這個字符用於指定本月的某某天。例如:「6#3」表示本月第三週的星期五(6表示星期五,3表示第三週)。「2#1」表示本月第一週的星期一。「4#5」表示第五週的星期三。
字符「C」容許在日期域和星期域出現。這個字符依靠一個指定的「日曆」。也就是說這個表達式的值依賴於相關的「日曆」的計算結果,若是沒有「日曆」 關聯,則等價於全部包含的「日曆」。如:日期域是「5C」表示關聯「日曆」中第一天,或者這個月開始的第一天的後5天。星期域是「1C」表示關聯「日曆」 中第一天,或者星期的第一天的後1天,也就是週日的後一天(週一)。
例子以下:
0 0 10,14,16 * * ? 天天上午10點,下午2點,4點0 0/30 9-17 * * ? 朝九晚五工做時間內每半小時0 0 12 ? * WED 表示每一個星期三中午12點 "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觸發