Springboot的默认定时任务——Scheduled注解

本博客参考博文地址

1.pom依赖:

引入springboot starter包即可

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
     <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>

2.启动类启用定时任务:

在启动类上加注解:@EnableScheduling即可实现。

@SpringBootApplication
@EnableScheduling
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

3.创建定时任务实现类:

定时任务1:

@Component
public class SchedulerTask {

    private int count=0;

    @Scheduled(cron="*/6 * * * * ?")
    private void process(){
        System.out.println("this is scheduler task runing  "+(count++));
    }

}

定时任务2:

@Component
public class Scheduler2Task {

    private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");

    @Scheduled(fixedRate = 6000)
    public void reportCurrentTime() {
        System.out.println("现在时间:" + dateFormat.format(new Date()));
    }

}

结果如下:

this is scheduler task runing  0
现在时间:09:44:17
this is scheduler task runing  1
现在时间:09:44:23
this is scheduler task runing  2
现在时间:09:44:29
this is scheduler task runing  3
现在时间:09:44:35

参数说明:

  @Scheduled接受两种定时的设置:

    一种是cornexpression。

    一种是Rate/Delay表达式(毫秒值):

      @Scheduled(fixedRate = 6000):上一次开始执行时间点后每隔6秒执行一次。

      @Scheduled(fixedDelay = 6000):上一次执行完毕时间点之后6秒再执行。

      @Scheduled(initialDelay=1000, fixedRate=6000):第一次延迟1秒后执行,之后按fixedRate的规则每6秒执行一次。

cornexpression表达式详解:

  完整字段:[秒] [分] [小时] [日] [月] [周] [年]

  字段      允许值            允许特殊字符

   秒       0-59              , - * /

  分       0-59              , - * /

  小时      0-23              , - * /

  日       1-31              , - * ? / L W C

  月       1-12或JAN-DEC          , - * /

  周       1-7或SUN-SAT          , - *  ? / L C #

  年       留空或1970-2099         , - * /

注:

  *表示所有值,在分钟里表示每一分钟触发。在小时,日期,月份等里面表示每一小时,每一日,每一月。

  ?表示不指定值。表示不关心当前位置设置的值。 比如不关心是周几,则周的位置填写?。  主要是由于日期跟周是有重复的所以两者必须有一者设置为?

  - 表示区间。小时设置为10-12表示10,11,12点均会触发。

  ,表示多个值。 小时设置成10,12表示10点和12点会触发。

  / 表示递增触发。 5/15表示从第5秒开始,每隔15秒触发。

  L 表示最后的意思。 日上表示最后一天。星期上表示星期六或7。 L前加数据,表示该数据的最后一个。

     星期上设置6L表示最后一个星期五。  6表示星期五

  W表示离指定日期最近的工作日触发。15W离该月15号最近的工作日触发。

  #表示每月的第几个周几。 6#3表示该月的第三个周五。

  示例:

    "0 0 12 * * ?" 每天中午12点触发      "0 15 10 ? * *" 每天上午10:15触发      "0 15 10 * * ?" 每天上午10:15触发      "0 15 10 * * ? *" 每天上午10:15触发      "0 15 10 * * ? 2005" 2005年的每天上午10:15触发      "0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发      "0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发      "0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发      "0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发      "0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发      "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触发      每天早上6点     0 6 * * *     每两个小时     0 */2 * * *      晚上11点到早上8点之间每两个小时,早上八点    0 23-7/2,8 * * *      每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点     0 11 4 * 1-3      1月1日早上4点     0 4 1 1 *

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏蓝天

养成良好的编程习惯

4.从源头避免版本不一致问题(当同一个文件在不同目录下出现拷贝时,容易出现其中某个未同步更新的问题)

1083
来自专栏web编程技术分享

【Java框架型项目从入门到装逼】第一节 - Spring框架 IOC的丧心病狂解说,来一波神的视角

2926
来自专栏技术总结

Python爬取电影天堂

摘取部分网友的回复: 1、之前在北京买房,谁想房价开始疯长,链家的房价等数据分析只给了一小部分,远远不能满足自己的需求。于是晚上花了几个小时的时间写了个爬虫,...

823
来自专栏静晴轩

Rake让Jekyll写博更优雅

于想拥有个人站点品牌的人来讲,现如今是一个很好的时期。至少 Hexo、Jekyll、Leanote、WordPress 、FarBox Octopress、gh...

3445
来自专栏跟着阿笨一起玩NET

Cron表达式

源码地址:http://download.csdn.net/download/xushaonian/5790307

1252
来自专栏SAP最佳业务实践

SAP最佳业务实践:FI–现金管理(160)-14银企对账-客户收款-承兑汇票-F-36收到承兑汇票

4.5.2 F-36收到银行承兑汇票 收到客户银行承兑汇票支付应收账款,形成财务记账如下: 借:应收票据 贷:应收账款 ? 输入凭证日期、参照、抬头文本 回...

2778
来自专栏一个会写诗的程序员的博客

《Kotlin极简教程》第1章 Kotlin简介

我们这里讲的Kotlin,就是一门以这个Котлин岛命名的现代程序设计语言。它是一门静态类型编程语言,支持JVM平台,Android平台,浏览器JS运行环境,...

672
来自专栏Youngxj

EMLOG博客添加OwO表情教程

1856
来自专栏小灰灰

Spring之定时任务基本使用篇

文章链接:https://liuyueyi.github.io/hexblog/2018/08/01/180801-Spring之定时任务基本使用篇/

1301
来自专栏极乐技术社区

小程序音频API踩坑手册

4393

扫码关注云+社区