SpringBoot的定时任务 @Scheduled

1、@Scheduled的使用。

前提:

@SpringBootApplication

@EnableScheduling //开启定时器

public class Application {

    public static void main(String[] args) {

        SpringApplication.run(Application.class , args) ;

    }

}

   

使用位置:

注解@Scheduled 可以作为一个触发源添加到一个方法中。

@RestController //方法所在的类 要被 springboot 管理

public class ScheduledRest {

      

    //在方法上加入@scheduled注解,启动项目定时任务就会自动触发

    @Scheduled(cron = "0/1 * * * * ? ") //从 0 分钟 开始 间隔1s定时任务执行一次

    public void scheduledTest01(){

        System.out.println(DateFormatUtils.format(new Date(),"yyyy-MM-dd HH:mm:ss")+"     testScheduled!!!");

    }

}

   

   

   

   

fixedDelay 、fixeDelayString

以毫秒为单位执行带注释的方法,结束最后一次调用,开始下一次调用。 返回值不同而已。

fixedRate 、fixedRateString

以第一次调用为时间主以,固定周期(毫秒为单位)执行带注释的方法,也是返回值不同

initialDelay、initialDelayString

第一次执行前延迟的毫秒数,返回值不同

zone

https://www.cnblogs.com/MaxElephant/p/8108462.html

   

   

cron表达式对应含义:

@Scheduled(cron = " * * * * * * ? *")

   

   

//根据Scheduled源码 解析对应参数

/*

* <ul>

* <li>second</li>   秒(0-59

* <li>minute</li>分钟 (0-59

* <li>hour</li>小时(0 -11

* <li>day of month</li>天 (0-31 视月份天数而定)

* <li>month</li>月(1- 12

* <li>day of week</li>星期(1-7)(SUN,MON,TUE,WED,THU,FRI,SAT)

    年份(1970-2009)可以省略

* </ul>

*/

   

   

每个参数并不一定是一个值,它们可以是一个表达式范围。(? 只是作为)

   

@Scheduled(cron = "10-30 * * * * ? " ) //在10s至30s范围内 每秒执行一次

 

@Scheduled(cron = "10-30 5 * * * ? " ) //在每小时的第5分钟 10s至30s范围内 每秒执行一次

 

@Scheduled(cron = "10-30 55-58 * * * ? " )//在每小时的第55分钟至58分钟 10s至30s范围内 每秒打印一次

 

@Scheduled(cron = "0 * * * * ? " ) //整分执行

 

@Scheduled(cron = "0 0 * * * ? " ) //整小时执行

 

@Scheduled(cron = "0 0 0 * * ? " ) //整天执行

 

@Scheduled(cron ="0 18 10 15 * ?") //每月15日上午10:18触发

 

@Scheduled(cron ="0 18 10 L * ?") //每月最后一日的上午10:18触发 L表示最后一天

 

@Scheduled(cron ="0 18 10 ? * 6L") //每月的最后一个星期五上午10:18触发

 

@Scheduled(cron ="0 18 10 ? * 6L 2002-2005") //2002年至2005年的每月的最后一个星期五上午10:18触发

posted @ 2020-11-11 11:20  黑质白章  阅读(715)  评论(0编辑  收藏  举报