SpringBoot+Schedule 快速配置定时任务及配置任务开关

启动类上添加@EnableScheduling ,开启Springboot自带的定时任务功能

@SpringBootApplication
@EnableScheduling
public class AdminApplication {
 
    public static void main(String[] args) {
        SpringApplication.run(AdminApplication .class, args);
    }
}
创建一个定时任务,每天8点执行一次

@Component
public class TestScheduling {
    private static int i = 0;
 
    @Scheduled(cron = "0 0 8 * * ?")//每天凌晨8点执行
    public void test(){
        System.out.println("this is "+ (i++) + "times!");
    }
}

在application.properties中添加定时任务的开关配置

## 定时任务基础配置
scheduling:
    enabled: true   #定时任务开关 默认开启


修改定时任务的默认注解开关

@Component
//默认条件注解是开启的,现在采用配置文件的变量来手动控制定时任务是否执行  设置关闭
@ConditionalOnProperty(prefix = "scheduling", name = "enabled", havingValue = "false")
public class TestScheduling {
    private static int i = 0;
 
    @Scheduled(fixedDelay=5*1000)
    public void test(){
        System.out.println("this is "+ (i++) + " times!");
    }
}
 

@Scheduled注解可以控制方法定时执行,其中有三个参数可选择:

1、fixedDelay控制方法执行的间隔时间,是以上一次方法执行完开始算起,如上一次方法执行阻塞住了,那么直到上一次执行完,并间隔给定的时间后,执行下一次。

列子:@Scheduled(fixedDelay = 5000)

说明:以一个固定延迟时间5秒钟调用一次执行,这个周期是以上一个调用任务的完成时间为基准,在上一个任务完成之后,5s后再次执行

2、fixedRate是按照一定的速率执行,是从上一次方法执行开始的时间算起,如果上一次方法阻塞住了,下一次也是不会执行,但是在阻塞这段时间内累计应该执行的次数,当不再阻塞时,一下子把这些全部执行掉,而后再按照固定速率继续执行。

列子:@Scheduled(fixedRate = 5000)

说明:以一个固定速率5s来调用一次执行,这个周期是以上一个任务开始时间为基准,从上一任务开始执行后5s再次调用

3、cron表达式可以定制化执行任务,但是执行的方式是与fixedDelay相近的,也是会按照上一次方法结束时间开始算起。

cron常用示例:

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分每分触发
0 0/5 14 * * ?    每天下午的 2点到2点59分(整点开始,每隔5分触发)
0 0/5 14,18 * * ?    每天下午的 2点到2点59分(整点开始,每隔5分触发)   每天下午的 18点到18点59分(整点开始,每隔5分触发)
0 0-5 14 * * ?    每天下午的 2点到2点05分每分触发
0 10,44 14 ? 3 WED    3月分每周三下午的 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    每月的第三周的星期五开始触发
0 0 12 1/5 * ?    每月的第一个中午开始每隔5天触发一次
0 11 11 11 11 ?    每年的11月11号 11点11分触发(光棍节)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值