Springtask 使用

本贴最后更新于 1788 天前,其中的信息可能已经水流花落

@Scheduled 的基本使用

表达式说明

说明
值范围 0-59 0-59 0-23 1-31 1-12/JAN-DEC 1-7/SUN-SAT 1970-2099
通配符 , - * / , - * / , - * / , - * ? / L W , - * / , - * ? / L # , - * /
是否必填

通配符说明

  • * 表示所有值。 例如:在分的字段上设置 *,表示每一分钟都会触发。
  • ? 表示不指定值。使用的场景为不需要关心当前设置这个字段的值。例如:要在每月的 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 * * ?

yml 统一配置 cron

代码部分:

    private Logger LOGGER = LoggerFactory.getLogger(TestService.class);

    @Scheduled(cron = "${Scheduled.cron1}")
    private void testdemomethod1(){
        LOGGER.info("[Scheduled.cron1]");
    }

    @Scheduled(cron = "${Scheduled.cron2}")
    private void testdemomethod2(){
        LOGGER.info("[Scheduled.cron2]");
    }

    @Scheduled(cron = "*/${Scheduled.interval} * * * * ?")
    private void testdemomethod3(){
        LOGGER.info("[Scheduled.interval]");
    }

yal:

Scheduled:
  cron1: '*/5 * * * * *'
  cron2: '*/10 * * * * *'
  interval: 30

注意: yml 的配置文件的特殊符号要加上单引号

作者:sprinkle_liz

链接:https://www.jianshu.com/p/1defb0f22ed1

来源:简书

  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    944 引用 • 1459 回帖 • 17 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...