Springboot定时任务@Scheduled

Springboot定时任务@Scheduled

SpringBoot中对定时任务也提供了支持,使用很简单,两个注解就可以开启定时任务,@Scheduled用于指定定时任务,@EnableScheduling用来开启定时任务。

SpringBoot 2.x版本

1.简单示例

2.相关概念

一、简单示例

1.建立ScheduledService类,写一个方法,在方法上使用注解@Scheduled。属性fixedDelay = 1000,initialDelay = 5000指初始化完成后等待5秒开始定时,每隔1秒执行一次该方法。

@Service
public class ScheduledService {

    @Scheduled(fixedDelay = 1000,initialDelay = 5000)
    public void scheduled(){

        System.out.println("Hello  Scheduled...");
    }
}

2.在入口类上加上注解@EnableScheduling,开启自动装配。

3.启动项目,会发现自动打印语句。

二、相关概念

2.1、属性
  1. fixedRate属性:该属性的含义是上一个调用开始后再次调用的延时(不用等待上一次调用完成),这样就会存在重复执行的问题,所以不是建议使用,但数据量如果不大时在配置的间隔时间内可以执行完也是可以使用的。
  2. fixedDelay属性:该属性的功效与fixedRate则是相反的,配置了该属性后会等到方法执行完成后延迟配置的时间再次执行该方法。
  3. initialDelay属性:该属性跟fixedDelay、fixedRate有着密切的关系,该属性的作用是第一次执行延迟时间,只是做延迟的设定,并不会控制其他逻辑,所以要配合fixedDelay或者fixedRate来使用。
2.2、Cron表达式

通过Cron表达式可以对属性中的世界进行指定。

字段  允许值  允许的特殊字符 
秒       0-59     , - * / 
分       0-59     , - * / 
小时      0-23     , - * / 
日期      1-31     , - * ? / L W C 
月份      1-12     , - * / 
星期      1-7       , - * ? / L C # 
年     1970-2099   , - * /

“*”字符被用来指定所有的值。
“?”:字符只在日期域和星期域中使用。它被用来指定“非明确的值”。

“-”:字符被用来指定一个范围。如:“10-12”在小时域意味着“10点、11点、12点”。

“,”:字符被用来指定另外的值。如:“MON,WED,FRI”在星期域里表示”星期一、星期三、星期五”。

“/”:字符用于指定增量。如:“0/15”在秒域意思是每分钟的0,15,30和45秒。

例如:

0 0 10,14,16 * * ? 每天上午10点,下午2点,4点

“0 0/5 14 * * ?” 在每天下午2点到下午2:55期间的每5分钟触发

0 0 12 ? * WED 表示每个星期三中午12点

“0 15 10 * * ? 2005” 2005年的每天上午10:15触发

“0 * 14 * * ?” 在每天下午2点到下午2:59期间的每1分钟触发

“0 0-5 14 * * ?” 在每天下午2点到下午2:05期间的每1分钟触发

“0 15 10 ? * MON-FRI” 周一至周五的上午10:15触发

“0 15 10 15 * ?” 每月15日上午10:15触发

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值