Spring定时器!要来学习一下吗?

Spring定时器!要来学习一下吗?

Posted by LY on November 13, 2018

在这里小小推荐下我的个人博客

csdn:雷园的csdn博客

个人博客:雷园的个人博客

简书:雷园的简书

Spring定时器应该怎么用呢?

在Java中呢,我们总是会有一些定时任务,比如说:发邮件、短信推送消息;发公告、更新等等。那么Spring中的定时器应该如何使用呢?接下来我们就来说说Spring定时器的使用方法。

1.我们今天呢,是以springboot项目为基础进行的,大家如果不会使用Springboot的话可以先收藏一下,明天我会出一个Springboot项目的搭建文章。到时候你可以返回来再看这篇。因为springboot实在是在方便了,用完之后就不想再回去写配置文件了。。。

2.首先呢,我们需要在启动主程序中开启定时,只需要在主类上增加@EnableScheduling即可,相信大家看字面意思也明白是什么意思啦!

3.接下来就是写我们的定时类,那么你就可以在定时类中完成自己的需求,无论是发送邮件、短信;还是公告、更新,他统统可以准确无误的帮你执行,如果你有兴趣,也可以写一个抢购物品呀、车票呀什么的脚本。当然说起来,写脚本可能python更强一些。

package com.blogproject.utils;

import com.hanshow.leiyuan.blogproject.service.TestService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class TimeUtils {
    @Autowired
    private TestService testService;

    @Scheduled(cron = "0 0/1 * * * ?")
    public void testTime() {
        System.out.println(testService.testTimeUtils());
    }
}

4.在以上代码中呢,我使用 @Autowired注入了testService,为的是告诉大家,使用@Component的类同Controller、Service一样,可以使用自动注入。

5.定时方法上方@Scheduled(cron = “0 0/1 * * * ?”)代表每分钟执行一次方法。testService中的方法仅仅是return了一个“you can you up!!!”字符串。我就不把代码贴出来。

6.大家可能很迷惑@Scheduled里面的时间到底是怎么算的,说实话~我也没学会。但是你可以去搜索一下!!!我在这里贴出几个简单的例子,大家如果悟性好的,可以尝试自己悟一下子!!!

* 代表所有的取值范围的数字
/ 代表每的意思,*/5就是每5个单位
- 代表从某个数字到某个数字
, 分开几个离散的数字

每两个小时    0 */2 * * *
晚上11点到早上8点之间每两个小时,早上8点    0 23-7,8 * * *
每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点    0 11 4 * 1-3
1月1日早上4点    0 4 1 1 *