Springboot使用定时任务

痞子三分冷 提交于 2020-03-04 18:19:36
我接触到的定时任务是一个配合微信公众号消息推送的延时推送文案,也就是用户在关注后的X分钟后,X小时或者X天后,将提前写好的文案和填充的数据推送到客户关注的公众号那里。
当然还有其他应用场景也陆续用到了,比如定时同步数据,定时保存redis的缓存数据,定时更新缓存数据,定时执行某个任务等等。
一开始用的是部署到Linux之后使用crontab执行写好的curl 请求的shell命令。后来发现Spring真的是太简单了。

(1)新建一个文件夹,下面写一个定时任务的配置类。
在这里插入图片描述
(2)加入以下代码。
其中@EnableScheduling 标签就是开启了延时任务功能。
@Configuration标签将这个配置类交由容器管理,无需注入且全局生效。
@Scheduled标签表示这个方法就是要定时执行的一个定时任务。

package com.example.demo.scheduled;

import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;

@Configuration
@EnableScheduling
public class StaticScheduleTask {
    @Scheduled(cron = "*/01 * * * * ?")
    public void say(){
        System.out.println("定时任务正在执行......");
    }
}

(3)我们甚至可以定义一个controller也作为定时任务执行。只需要加上@Scheduled注解即可。
在这里插入图片描述
(4)启动看看效果。
在这里插入图片描述

可以看到非常的准确,配置类里面的定时任务是一秒执行一次,controller我设置的是三秒执行一次。非常方便,再也不用去配置服务器上面的crontab命令写shell了。

具体设置那些cron时间表达式的话,网上有一个生成器,不需要背:

http://cron.qqe2.com/

定时任务就这么方便创建好了,剩下的定时要执行自己什么任务都是随便玩了。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!