请选择 进入手机版 | 继续访问电脑版
搜索
房产
装修
汽车
婚嫁
健康
理财
旅游
美食
跳蚤
二手房
租房
招聘
二手车
教育
茶座
我要买房
买东西
装修家居
交友
职场
生活
网购
亲子
情感
龙城车友
找美食
谈婚论嫁
美女
兴趣
八卦
宠物
手机

SpringBoot系列:Spring Boot定时任务Spring Schedule

[复制链接]
查看: 95|回复: 0

1万

主题

2万

帖子

4万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
46392
发表于 2019-11-9 18:18 | 显示全部楼层 |阅读模式
Spring Schedule是Spring供给的按时使命框架,相较于Quartz,Schedule加倍简单易用,在中小型利用中,对于大部分需求,Schedule都可以胜任。
一、Spring Schedule操纵演示

在SpringBoot操纵Spring Schedule很是简单,由于SpringBoot本身的starter中已经集成了Schedule,而不必要我们做更多的处置惩罚。
操纵@EnableScheduling注解开启按时功用,该注解可以操纵在启动类上,也可以注解于按时使命的类上。然后操纵@Scheduled注解配合其参数完成按时使命。
例如我们必要每一秒实行一次的使命, 写成@Scheduled(fixedRate = 1000)即可。
  1. @EnableScheduling@Componentpublic class Task {    private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");    @Scheduled(fixedRate = 1000)    public void taskOne(){        System.out.println("现在时候:" + dateFormat.format(new Date()));    }}
复制代码
启动步伐,该按时便可以间隔一秒持续实行了。
SpringBoot系列:Spring Boot定时任务Spring Schedule  游戏 1669484-20191109153514992-2103066633

操纵Spring Schedule就是这么简单,倘使有更多其他的需求,配合@Scheduled的其他参数,底子也可以实现。
一、@Scheduled参数详解

SpringBoot系列:Spring Boot定时任务Spring Schedule  游戏 1669484-20191109153515347-967219169

cron

支持传入cron表达式:[秒] [分] [小时] [日] [月] [周] [年],[年]不是必须的域,可以省略[年],则一共6个域。
位置说明必填答应填写的值答应的通配符1秒是0-59- * /2分是0-59- * /3时是0-23- * /4日是1-31- * ? / L W5月是1-12 or JAN-DEC- * /6周是1-7 or SUN-SAT- * ? / L #7年否1970-2099- * /

  • * 表现全数值。 例如:在分的字段上设备 *,表现每一分钟城市触发。
  • ? 表现不指定值。操纵的场景为不必要关心当前设备这个字段的值。例如:要在每月的10号触发一个操纵,但不关心是周几,所以必要周位置的那个字段设备为”?” 具体设备为 0 0 0 10 * ?
  • - 表现区间。例如 在小时上设备 “10-12”,表现 10,11,12点城市触发。
  • , 表现指定多个值,例如在周字段上设备 “MON,WED,FRI” 表现周一,周三和周五触发/ 用于递增触发。如在秒上面设备”5/15” 表现从5秒起头,每增15秒触发(5,20,35,50)。 在月字段上设备’1/3’所示每月1号起头,每隔三天触发一次。
  • L 表现末端的意义。在日字段设备上,表现当月的末端一天(根据当前月份,假如是仲春还会根据能否是润年[leap]), 在周字段上表现星期六,相当于”7”或”SAT”。假如在”L”前加上数字,则表现该数据的末端一个。例如在周字段上设备”6L”这样的格式,则表现“本月末端一个星期五”
  • W 表现离指定日期的近来那个工作日(周一至周五). 例如在日字段上置”15W”,表现离每月15号近来的那个工作日触发。假如15号恰正是周六,则找近来的周五(14号)触发, 假如15号是周未,则找近来的下周一(16号)触发.假如15号恰幸亏工作日(周一至周五),则就在该天触发。假如指定格式为 “1W”,它则表现每月1号今后近来的工作日触发。假如1号正是周六,则将在3号下周一触发。(注,”W”前只能设备具体的数字,不答应区间”-“)。
  • # 序号(表现每月的第几个周几),例如在周字段上设备”6#3”表现在每月的第三个周六.留意假如指定”#5”,恰恰第五周没有周六,则不会触发该设备(用在母亲节和父亲节再合适不外了) ;小提醒:’L’和 ‘W’可以一组合操纵。假如在日字段上设备”LW”,则表现在本月的末端一个工作日触发;周字段的设备,若操纵英翰墨母是不区分巨细写的,即MON与mon类似。
示例


  • 每隔5秒实行一次:/5 * * * ?
  • 每隔1分钟实行一次:0 /1 * * ?
  • 天天23点实行一次:0 0 23 * * ?
  • 天天破晓1点实行一次:0 0 1 * * ?
  • 每月1号破晓1点实行一次:0 0 1 1 * ?
  • 每月末端一天23点实行一次:0 0 23 L * ?
  • 每周星期天破晓1点实行一次:0 0 1 ? * L
  • 在26分、29分、33分实行一次:0 26,29,33 * * * ?
  • 天天的0点、13点、18点、21点都实行一次:0 0 0,13,18,21 * * ?
zone

表现时区,吸收一个java.util.TimeZone#ID。cron表达式会基于该时区分解。默许是一个空字符串,即取办事器地址地的时区。
fixedDelay

上一次实行终了时候点以后多长时候再实行。
fixedDelayString

与fixedDelay类似,传入字符串,也可支持传入${}占位符读取设备文件。
  1.     @Scheduled(fixedDelayString = "${task.two.fixedDelay}")    void taskTwo() {       System.out.println("现在时候:" + dateFormat.format(new Date()));    }
复制代码
fixedRate

上一次起头实行时候点以后多长时候再实行。
fixedRate与fixedDelay的区分就是:fixedDelay是在上一个使命竣事后才起头举行间隔计时,也就是说两次使命之间的时候差即是间隔+使命实行耗时,而fixedRate是在上一个使命一路头就已经起头举行间隔计时了,可以视为牢固即是设备的间隔时候。
fixedRateString

与fixedRate一样,传入字符串,支持占位符读取设备文件。
initialDelay

第一次使命耽误时候。
initialDelayString

同initialDelay,支持占位符读取设备信息。

免责声明:假如加害了您的权益,请联系站长,我们会实时删除侵权内容,感谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2006-2014 妈妈网-中国妈妈第一,是怀孕、育儿、健康等知识交流传播首选平台 版权所有 法律顾问:高律师 客服电话:0791-88289918
技术支持:迪恩网络科技公司  Powered by Discuz! X3.2
快速回复 返回顶部 返回列表