背景:
最近要用到这个定时任务,之前就简单使用注解的那种方式,需求一变化,就得重新修改。
就想到了动态定时任务,连接数据库来动态选择,这样确实解决了问题。
但是仍然有一个缺陷,就是没法设置任务的执行时间,无法做到像 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
本文就是简单介绍了,具体使用时还需要根据具体情况具体分析啦。
领取专属 10元无门槛券
私享最新 技术干货