1.Spring配置文件
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.0.xsd"
<!-- 掃描路徑 -->
<context:component-scan base-package="com.dico.sys.utils.spider"></context:component-scan>
<!-- 開啟這個配置拜隧,spring才能識別@Scheduled注解 -->
<task:scheduler id="qbScheduler" pool-size="10"/>
<task:annotation-driven scheduler="qbScheduler" mode="proxy"></task:annotation-driven>
2.任務類
@Component("autoSpider")
public class AutoSpider {
//每5秒執(zhí)行一次
//cron表達式
@Scheduled(cron = "0/5 * * * * ?")
public void say(){
System.out.println("autoSpider start");
System.out.println("---------running------------");
System.out.println("autoSpider end");
}
}
3.cron表達式說明
cron表達式通常用于配置計劃任務的觸發(fā)時間。一個cron表達式是一個由六個或者七個子表達式(字段)組成的字符串刁愿。而子表達式或者稱為字段之間用空格隔開件缸。
字段 |
是否必須 |
允許的值 |
允許的特殊字符 |
秒(seconds) |
Y |
0-59 |
, - * / |
分(minutes) |
Y |
0-59 |
, - * / |
時(hours) |
Y |
0-23 |
, - * / |
天(day of month) |
Y |
1-31 |
, - * /L W C |
月(month) |
Y |
0-11 或者 JAN-DEC |
, - * / |
星期(day of week) |
Y |
1-7 或者 SUN-SAT |
, - * /?L C# |
年(year) |
N |
1970-2099或者不寫 |
, - * / |
3.1特殊字符說明
- “,”表示and
- “-”表示一個區(qū)間段履恩,即開始到結束
- “*”表示全選,即用漢語中的“每”或者英文中的every/each/per
- “/”表示一個區(qū)間段的時長认然,例如放在第一位“/10”則表示每10秒
- “L”表示最后,即Last
- “W”表示weekday,即工作日也就是周一到周五
- “C”表示canlendar,即日歷尤仍,例如“1C”在星期位上就是包括日歷上的星期日
- “#”表示序列师抄,如“#2”表示第二
3.2例子
表達式 |
表達的時間 |
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 * * ? |
每天下午14點鐘開始到14點59分結束這么一個時間段 |
0 0/5 14 * * ? |
每天下午14點到14點55分之間每5分鐘觸發(fā)一次 |
0 0/5 14,18 * * ? |
每天下午14點到14點55分 和18點到18點55分之間 每5分鐘觸發(fā)一次 |
0 0-5 14 * * ? |
每天下午14點開始到14點05結束 |
0 10,44 14 ? 3 WED |
每年三月份的每個周三下午14點10分和14點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分 |
0 0 12 1/5 * ? |
每個月從第一天開始每隔5天中午12點觸發(fā)一次 |
0 11 11 11 11 ? |
每年11月11號11點11分 |