一、Scheduled定时任务器
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>
二、Scheudled定时任务
@Component
public class ScheduleDemo {
/**
* 定时任务方法
* @Schedule:设置定时任务
* cron属性:cron表达式,定时任务触发是时间的一个字符串表达形式
*/
@Scheduled(cron="0/2 * * * * ?")
public void scheduledMethod(){
System.out.println("定时器被触发"+new Date());
}
}
启动类添加
@EnableScheduling
cron表达式讲解
cron表达式是一个字符串,分为6个或7个域,每一个域代表一个含义。
cron有如下两种表达格式
(1)Seconds Minute Hours Day Month Week Year
(2) Seconds Minutes Hours Day Month Week
一、 结构
corn从左到右(以空格形式隔开):秒 分 小时 月份中的的日期 月份 星期 年份
二、各字段的含义
秒 允许值:0-59 允许的特殊字符: ,- * /
分钟 允许值:0-59 允许的特殊字符: ,- * /
小时 允许值: 0-23 允许的特殊字符: ,- * /
日 允许值:1-31 允许的特殊字符: ,- * / L W C
月 允许值 1-12 允许的特殊字符: ,- * /
星期 允许值 1-7 允许的特殊字符: ,- * ?/ L C #
年(可选) 允许值 1970-2099 允许的特殊字符: ,- * /星期起始星期是星期日 1代表星期日,7代表星期六
星期和日存在冲突,一般定义时舍弃一个用?占位
符号的意义
• *:可用在所有字段中,表示对应时间域的每一个时刻,例如,“分钟字段时,表示每分钟”
• ?:该字符只在日期和星期字段中使用,它通常指定为“无意义的值”,相当于占位符。
• -减号:表达一个范围,如再星期字段中使用“10-12”,则表示10-12点,即10,11,12;
• ,逗号:表示一个列表值,如在星期字段中使用“MON,WED,FRI”,则表示星期一、星期三和星期五;
• /斜杠:x/y表达一个等步长序列,x为起始值,y为增量值。如在分钟字段中使用0/15,则表示为1,15,30,和45,而5/15在分钟字段中表示,5,20,35,50,你也可以使用*/y ,他等同于0/y;
• L:该字段只在日期和星期字段中使用,代表“Last”意思,但他在两个字段中意思不同。L在日期字段中,表示这个月份的最后一天,如一月的最后一天31号非闰年2月的最后一天28号;如果L用在星期中则表示星期六,等同于7.但是如果L出现在星期字段里,而且在前面有一个数值X,则表示“这个月的最后X天”。例如6L表示该月的最后星期五;
• W:该字符只能出现在日期字段里面,是对前导日期的修饰,表示离该日期最近的工作日。例如,15W表示离该月15号最近的工作日,如果该月15号是星期六,则匹配14号星期五;如果15号是星期日,则匹配16号星期一;如果15号是星期二,则结果为15号星期二; 但是必须注意关联匹配日期不能够跨月例如 若你指定1W ,如果1号是星期六,结果不会匹配上月的末的星期五,而会匹配3号的星期一。W字符串只能指定单一日期,而不能指定日期的范围。
• LW组合:在日期字段可以使用LW 表示当月的最后一个工作日;
• #井号:该字符只能在星期字符中使用,表示当月某个工作日,如6#3表示当月的第三个星期五(6表示星期五,#3表示当前的第三个),而4#5表示当月的第五个星期三,假定当月没有第五个星期三,忽略不触发。
• C:该字符只在日期和星期字段中使用,代表“Calendar“ 意思。他的意思是计划所关联的日期。