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 条评论
登录 后参与评论

相关文章

来自专栏互联网大杂烩

Spring MVC框架

前端控制器是DispatcherServlet;应用控制器其实拆为处理器映射器(Handler Mapping)进行处理器管理和视图解析器(View Resol...

512
来自专栏Java成神之路

Spring_总结_01_Spring概述

从今天开始,重新总结一下Spring的相关知识,主要是结合《Spring实战(第四版)》和 《JavaEE开发的颠覆者——SpringBoot实战》这两本书以及...

594
来自专栏用户2442861的专栏

轻松理解AOP(面向切面编程)

本文主要介绍AOP思想,而不是Spring,Spring在本文只做为理解AOP的工具和例子,所以也不打算介绍Spring的Aspect、Join point、...

531
来自专栏微信公众号:Java团长

SpringMVC与Struts2的区别与比较总结

1、Struts2是类级别的拦截, 一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟...

783
来自专栏面朝大海春暖花开

spring杂碎

Spring就是一个大工厂,可以将所有对象创建和依赖关系维护,交给Spring管理

872
来自专栏java思维导图

spring框架思维导图,简约概括

Spring之旅 简化java开发 激发pojo的潜能 依赖注入 应用切面 使用模版消除样板式代码 容纳你的bean 与应用上下文共事 bean的生命周期 俯翰...

2786
来自专栏Java学习123

【Spring】Spring MVC原理及配置详解

1912
来自专栏java学习

Spring MVC工作原理 及注解说明

Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框...

782
来自专栏用户画像

Ajax GET请求后台数据

1、前台ftl文件,通过URL请求后台数据,返回数据(Json格式)封装在data中

693
来自专栏面朝大海春暖花开

springMVC

1.用户发送请求至前端控制器DispatcherServlet 2.DispatcherServlet收到请求调用HandlerMapping处理器映射器。 3...

741

扫码关注云+社区