SpringTask(Spring定时任务注解方式)
2016-12-01 本文已影响0人
shaocong_mo
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秒执行一次
//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表达式通常用于配置计划任务的触发时间。一个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
- “-”表示一个区间段,即开始到结束
- “*”表示全选,即用汉语中的“每”或者英文中的every/each/per
- “/”表示一个区间段的时长,例如放在第一位“/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分钟触发一次 |
0 0/5 14,18 * * ? | 每天下午14点到14点55分 和18点到18点55分之间 每5分钟触发一次 |
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点触发一次 |
0 11 11 11 11 ? | 每年11月11号11点11分 |