首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SpringBoot实现固定、动态定时任务|三种实现方式

背景:

最近要用到这个定时任务,之前就简单使用注解的那种方式,需求一变化,就得重新修改。

就想到了动态定时任务,连接数据库来动态选择,这样确实解决了问题。

但是仍然有一个缺陷,就是没法设置任务的执行时间,无法做到像 QQ 发说说那样,给 xdm 祝福生日时,设定说说为晚上00:00发布。

本文就以上三点用自己的思路写了一个小Demo,希望对大家有所帮助。

封面:。

倒计时拉倒计时拉,xdm,国庆就要来了

前言:

阅读完本文:‍

知晓 用注解如何实现定时任务

明白 如何实现一个动态定时任务 (与数据库相关联实现)

理解 实现设置时间执行定时任务  (使用 实现)

一、注解实现定时任务

用注解实现是真的简单,只要会 cron 表达式就行。‍

第一步:主启动类上加上 注解

第二步:写一个类,注入到Spring,关键就是 注解。() 里就是 cron 表达式,用来说明这个方法的执行周期的。

我常常也记不住,通常是在线生成的:Cron 表达式在线生成

执行效果:

源码在文末。

二、动态定时任务

其实也非常的简单。

2.1、建数据表

第一步:建个数据库表。

2.2、导入依赖,基础编码

第二步:导入数据库相关依赖,做到能从数据库查询数据。大家都会。‍

第三步:编码

实体类:

mapper层:

2.3、主要实现代码

第四步:写一个类 实现

实现 方法,此方法的作用就是根据给定的 ScheduledTaskRegistrar 注册 TaskScheduler 和特定的Task实例

2.4、效果

注意:当你修改了任务执行周期后,生效时间为执行完最近一次任务后。这一点是需要注意的,用生活中的例子理解就是我们取消电话卡的套餐也要下个月生效,含义是一样的。

源码同样在文末。

三、实现设置时间定时任务

通常业务场景是我前言中说的那样,是一次性的定时任务。如:我设置了我写的这篇文章的发布时间为今天下午的两点,执行完就删除没有了。一次性的。

实现主要依靠于 的方法来实现。其本质和动态定时任务的实现是一样的。

3.1、实现重点

代码中都含有注解,不多做阐述。

3.2、异步线程池的配置

3.3、业务代码

这里需要注意一个点,我给项目中的   做了类型转换。这里没贴出来(主要是复制以前的代码遗留下来的,源码中都有)

大家简单使用,可以直接用注解 标注在 属性上即可。

简单封装的一个实体类:

3.4、效果

开启一个动态任务:

查看开启还未执行的动态任务:

执行结果:

和我们代码中是一模一样的。

停止任务:

再去查看就是已经停止的拉

四、自言自语

:springboot-scheduled

本文就是简单介绍了,具体使用时还需要根据具体情况具体分析啦。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20211001A01PN200?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券