Scheduled定时任务
//注解放到启动类上来开启Scheduling
@EnableScheduling
//使用
//每天23点50执行清理回收日志文件
@Scheduled(cron = "0 46 23 * * ?")
public void logFiles(){}
参数详解:
-
cron
接收一个cron表达式,cron表达式是一个字符串,字符串以5或6个空格隔开,分开共6或7个域,每一个域代表一个含义。
// cron ="[秒] [分] [时] [日] [月] [周] [年]" @Scheduled(cron = "0 46 23 * * ?") //注意:年不是必选域,可省略; // 周和日不能同时使用,使用其一时另一个要用 `?`;
序号 说明 必填 允许填写的值 允许的通配符 1 秒 是 0-59 , - * / 2 分 是 0-59 , - * / 3 时 是 0-23 , - * / 4 日 是 1-31 , - * ? / L W 5 月 是 1-12 / JAN-DEC , - * / 6 周 是 1-7 or SUN-SAT , - * ? / L # 7 年 否 1970-2099 , - * / 常用说明:
*
表示所有值。 例如:在分的字段上设置 *,表示每一分钟都会触发。?
表示不指定值。使用的场景为不需要关心当前设置这个字段的值。-
表示区间。例如 在小时上设置 “10-12”,表示 10,11,12点都会触发。,
表示指定多个值,例如在周字段上设置 “MON,WED,FRI” 表示周一,周三和周五触发。/
用于递增触发。如在秒上面设置”5/15” 表示从5秒开始,每增15秒触发(5,20,35,50)。 在日字段上设置’1/3’所示每月1号开始,每隔三天触发一次。如:每隔1分钟执行一次:0 */1 * * * ? | 每2分钟执行1次: 0 */2 * * * ?表达式占位符:
cron属性接收的cron表达式支持占位符;
application.yml time: cron: 0 */1 * * * ? interval: 5 //使用 @Scheduled(cron = "${time.cron}") @Scheduled(cron = "0 */${time.interval} * * * ?")
-
fixedDelay
上一次执行完毕后多久在次执行;间隔多久执行;
@Scheduled(fixedDelay = 5000) //上一次执行完毕时间点之后5秒再执行
-
fixedDelayString
与
fixedDelay
意思相同,只是使用字符串的形式。唯一不同的是支持占位符。如:@Scheduled(fixedDelayString = "5000") //上一次执行完毕时间点之后5秒再执行 //使用配置文件中的占位符 @Scheduled(fixedDelayString = "${time.fixedDelay}") void testFixedDelayString() { System.out.println("Execute at " + System.currentTimeMillis()); }
-
fixedRate
上一次开始执行时间点之后多长时间再执行。如:
@Scheduled(fixedRate = 5000) //上一次开始执行时间点之后5秒再执行
-
fixedRateString
与
fixedRate
意思相同,只是使用字符串的形式。唯一不同的是支持占位符。 -
initialDelay
@Scheduled(initialDelay=1000, fixedRate=5000) //第一次延迟1秒后执行,之后按fixedRate的规则每5秒执行一次
-
initialDelayString
与
initialDelay
意思相同,只是使用字符串的形式。唯一不同的是支持占位符。