Spring Boot 定时器 @Scheduled 注解 个参数详解

@Scheduled注解为定时任务

1. cron表达式里写执行的时机

(1) cron表达式是一个字符串,字符串以5或6个空格隔开,分开共6或7个域,每一个域代表一个含义;

(2) cron表达式语法:[秒] [分] [小时] [日] [月] [周] [年];

(3) [年]不是必须的域,可以省略[年],则一共6个域;

cron规则:

特殊字符表达式


*:代表所有可能的值

-:指定范围

,:列出枚举  例如在分钟里,"5,15"表示5分钟和20分钟触发

/:指定增量  例如在分钟里,"3/15"表示从3分钟开始,没隔15分钟执行一次

?:表示没有具体的值,使用?要注意冲突

L:表示last,例如星期中表示7或SAT,月份中表示最后一天31或30,6L表示这个月倒数第6天,FRIL表示这个月
的最后一个星期五

W:只能用在月份中,表示最接近指定天的工作日

#:只能用在星期中,表示这个月的第几个周几,例如6#3表示在每月的第三个周六

小提示:

(1) ’L’和 ‘W’可以一组合使用。如果在日字段上设置”LW”,则表示在本月的最后一个工作日触发;周字段的设置,若使用英文字母是不区分大小写的,即MON与mon相同。

示例

"0 0 12 * * ?"    每天中午十二点触发

"0 15 10 ? * *"    每天早上10:15触发

"0 15 10 * * ?"    每天早上10:15触发

"0 15 10 * * ? *"    每天早上10:15触发

"0 0 10,14,16 * * ?"	每天上午10点,下午2点,4点

"0 0/30 9-17 * * ?"    朝九晚五工作时间内每半小时

"0 15 10 * * ? 2005"    2005年的每天早上10:15触发

"0 * 14 * * ?"    每天从下午2点开始到2点59分每分钟一次触发

"0 0/5 14 * * ?"    每天从下午2点开始到2:55分结束每5分钟一次触发

"0 0/5 14,18 * * ?"    每天下午2点至2:55和6点至6点55分两个时间段内每5分钟一次触发

"0 0-5 14 * * ?"    每天14:00至14:05每分钟一次触发

"0 10,44 14 ? 3 WED"    三月的每周三的14:10和14:44触发

"0 0 12 ? * WED"    每个星期三中午12点

"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 */1 * * ?"    每小时执行一次

"0 0/5 * * * ?"    每五钟执行一次

"*/5 * * * * ?"    每隔5秒执行一次

"0 */1 * * * ?"    每隔1分钟执行一次

"0 0 23 * * ?"    每天23点执行一次

"0 0 1 1 * ?"    每月1号凌晨1点执行一次

2.zone

时区,接收一个java.util.TimeZone#IDcron表达式会基于该时区解析。默认是一个空字符串,即取服务器所在地的时区。比如我们一般使用的时区Asia/Shanghai。该字段我们一般留空。

3.fixedDelay

上一次执行完毕时间点之后多长时间再执行,如:

//上一次执行完毕时间点之后5秒再执行
@Scheduled(fixedDelay = 5000)

4.fixedDelayString

fixedDelay意思相同,只是使用字符串的形式。唯一不同的是支持占位符。如:

//上一次执行完毕时间点之后5秒再执行
@Scheduled(fixedDelayString = "5000") 



/**
 * 占位符的使用(配置文件中有配置:time.fixedDelay=5000):
 */
@Scheduled(fixedDelayString = "${time.fixedDelay}")
public void testFixedDelayString() {
    System.out.println("Execute at " + System.currentTimeMillis());
}

5. fixedRate

上一次开始执行时间点之后多长时间再执行。如:

//上一次开始执行时间点之后5秒再执行
@Scheduled(fixedRate = 5000) 

6. fixedRateString

fixedRate意思相同,只是使用字符串的形式。唯一不同的是支持占位符。

7.initialDelay

第一次延迟多长时间后再执行。如:

//第一次延迟1秒后执行,之后按fixedRate的规则每5秒执行一次
@Scheduled(initialDelay=1000, fixedRate=5000) 

8. initialDelayString

initialDelay意思相同,只是使用字符串的形式。唯一不同的是支持占位符。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值