您的位置:首页 > 其它

Cron表达式

2015-12-29 17:23 453 查看

1、cron表达式格式

{秒数} {分钟} {小时} {日期} {月份} {星期} {年份(可为空)}

2、格式详解

字段

有效范围

特殊字符



0~59

, - * /

分钟

0~59

, - * /

小时

0~23

, - * /

日期

0~31

, - * / ? L W C



0~11

, - * /

星期

1~7 或 SUN,MON,TUE,WED,THU,FRI,SAT

, - * / ? L #
C

年份

1970~2099

, - * /

其中每个元素可以是一个值,一个连续区间,一个间隔时间,一个列表,通配符。

由于"日期"和"星期"这两个元素互斥的,必须要对其中一个设置"?"。

通配符含义
,用来列出枚举值值

例如:在分钟字段里用“5,20”意味着在5和20分每分钟触发一次

-指定一个值的范围

*代表所有可能的值

/用来指定数值的增量

例如:在分钟字段里用“0/15”表示从第0分钟开始,每15分钟

?表示不指定值

L用在日期表示一个月中的最后一天

例如:6L,表示某月的倒数第6天

用在星期表示一个月中的最后一个星期x

例如:FRIL,表示某月的最后一个星期五

W

指定离给定日期最近的工作日(周一到周五)

例如:在日期字段用“15W”指这个月最接近第15天的工作日,

如果这个月第15天是周六,那么触发器将会在这个月第14天即周五触发

如果这个月第15天是周日,那么触发器将会在这个月第16天即周一触发

C指和日历关联后计算过的值

例如:在日期 字段用“5C”指在这个月第5天

在星期字段用“1C”指在周日

#表示该月第几个星期x

例如:4#2,表示某月的第二个星期三

6#3,表示某月的第三个星期五

3、常用例子

"0 0 12 * * ?" 每天12点触发

"0 0 12,20 * * ?" 每天12点和20点触发

"0 0/5 * * * ?" 每隔5分钟触发一次

"0 0 10 * * ? 2015" 2015年的每天10点触发

"0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发

"0 15 10 15 * ?" 每月15日上午10:15触发

"0 15 10 L * ?" 每月最后一日的上午10:15触发

4、在Spring中使用Cron表达式

在Spring中,我们可以使用Cron来做定时器,执行定时任务,使用注解@Scheduled和@EnableScheduling。

在你要定时执行的事务上添加注解和Cron表达式,如:

public class MyTask {
@Scheduled(cron = "0 0 10 * * ?") // 每天10点执行一次
public void work() {
// task execution logic
}
}

在@Configuration的类上添加@EnableScheduling注解

@Configuration
@EnableScheduling
public class AppConfig {
// various @Bean definitions
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: