SpringBoot配置定时任务

希望某些需求在指定的时间点去执行。例如备份数据、发送邮件等。
首先需要了解一个知识点——时间表达式
语法结构:
秒 分 时 日 月 星期 年(可以为空)

第一位:表示秒,取值范围: 0-59
第二位:表示分,取值范围: 0-59
第三位:表示小时,24小时制,取值 0-23
第四位:日期天/日,取值范围:1-31
第五位:日期月份,取值范围:1-12
第六位:星期,取值范围:1-7,表示星期一,星期二...
    注意:1表示星期天,2表示星期一。
第七位:年份,可以留空

表达式:
*:每;如果写在秒上,表示每秒;写在分钟表示每分钟;
/:步长;例如,1/5,如果在秒上,表示,从第一秒开始,每5秒执行一次;
?:只能用在每月第几天和星期两个域。表示不指定值,当 2 个子表达式其中之一被指定了值以后,为了避免冲突,需要将另一个子表达式的值设为“?”
-:表示范围,例如,在分域使用5-20,表示从5分到20分钟每分钟触发一次
,:枚举
L:last,表示最后,只能出现在星期和每月第几天域,如果在星期域使用1L,意味着在最后的一个星期日触发。
W:表示有效工作日(周一到周五),只能出现在每月第几日域,系统将在离指定日期的最近的有效工作日触发事件。注意一点,W的最近寻找不会跨过月份
LW:这两个字符可以连用,表示在某个月最后一个工作日,即最后一个星期五
#:用于确定每个月第几个星期几,只能出现在每月第几天域。例如在1#3,表示某月的第三个星期日.
例如:
* * * * * * -> 每秒执行
0 0 2 * * ?-> 每天凌晨两点执行
生成表达式可参考:
http://qqe2.com/cron
编写一个定时任务类

@Component // 把这个类交给spirng管理
public class MyQuartz {
    
    @Autowried
    private Services service;

    @Scheduled(cron="1,5,10 * * * * ?")// 定时任务的表达式
    public void doIt(){
        System.out.println(new Date());
    }
}

启动类上开启定时任务
SpringBoot 默认支持定时任务,但是并不是所有的项目都需要用到定时任务。所以就给定时任务制定了开关,在需要的时候打开开关即可。

@EnableScheduling // 开启定时任务

案例:

/**定时器类
 * 把这个类交给Spring容器管理
 * 将MySchedule交给spring容器
 */
// 开启定时任务(项目需要的时候开启即可)
// @EnableScheduling
@Component
public class MySchedule {
    // cron里面的参数依次代表:秒  分  时  日  月 星期 (年,可以省略)
    @Scheduled(cron = "0/5 * * * * *",zone = "GMT")

    public void MySchedule(){
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String strDate = sdf.format(date);
        System.out.println(strDate);
    }
}

只要在项目启动之后会在设置的每隔一段时间会自动执行一次。

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值