记录一下SpringBoot中定时任务的使用 @EnableScheduling

@EnableScheduling顾名思义就是使计划任务可以使用,其实就是用来使@Schedule注解功能可用的注解。当开发者在XXXApplication类中添加@EnableScheduling开启对定时任务的支持,在相应的方法上添加@Scheduled声明需要执行的定时任务。
其中Scheduled注解中有以下几个参数:
cron
zone
fixedDelay和fixedDelayString
fixedRate和fixedRateString
initialDelay和initialDelayString

1.cron是设置定时执行的表达式
<1> cron表达式可以分为两种:
    1、6位长度的  秒 分 时 日 月 星期
    2、7位长度的  秒 分 时 日 月 星期 年
  一般都用的是6位长度的,因为很少碰到会区分年的定时任务

<2> 每个位置可以填充的东西:
  秒:  可出现,- * / 四个字符,有效范围为0-59的整数
  分:  可出现,- * / 四个字符,有效范围为0-59的整数
  时:  可出现,- * / 四个字符,有效范围为0-23的整数
  日:  可出现,- * / ? L W C八个字符,有效范围为0-31的整数
  月:  可出现,- * / 四个字符,有效范围为1-12的整数或JAN-DEC
  星期:  可出现,- * / ? L C #四个字符,有效范围为1-7的整数或SUN-SAT两个范围。1表示星期天
  年:  可出现,- * / 四个字符,有效范围为1970-2099年
  
  <3> 字符代表的意思:
    1) * 代表所有
    2)?只用于日和星期,它也匹配域的任意值,但实际不会。因为DayofMonth和 DayofWeek会相互影响。例如想在每月的20日触发调度,不管20日到底是星期几,则只能使用如下写法: 13 13 15 20 * ?, 其中最后一位只能用?,而不能使用*,如果使用*表示不管星期几都会触发,实际上并不是这样。
    3) - 代表范围
    4) / 代表从什么时候开始,隔固定时间执行,前面的数字代表开始的时间,后面的数字代表间隔
    5),多个数字就用,隔开
    6) L 只用于日和星期,代表最后一个
    7) W 只用于日,代表有效工作日,就是离当前数字最近的一个工作日
    8) LW 代表某个月的最后一个星期几
    9) # 代表每个月第几个星期几
此段学习自http://www.cnblogs.com/summertime-wu/p/7641589.html

2.zone表示执行时间的时区

3.fixedDelay 和fixedDelayString 表示一个固定延迟时间执行,上个任务完成后,延迟多长时间执行

4.fixedRate 和fixedRateString表示一个固定频率执行,上个任务开始后,多长时间后开始执行

5.initialDelay 和initialDelayString表示一个初始延迟时间,第一次被调用前延迟的时间

配置类

@SpringBootApplication
@EnableScheduling
public class TeatimeApplication {
	public static void main(String[] args){
		SpringApplication.run(TeatimeApplication.class, args);
	}
}

task任务类

@Component
public class TestSvr {

    @Resource
    InteractionSvr interactionSvr;
    @Value("${scheduled.onOff}")
    Boolean onoff;

    @Scheduled(cron = "${scheduled.auto_sendMsg}")
    public void autoSendMsg(){
        if (onoff) {  //自定义的开关 方便启停
            interactionSvr.sendMsgByTime();
        }
    }
}

在application.yaml中定义的时间

scheduled:
  onOff: true
  auto_sendMsg: 0/5 * * * * ?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值