最近做项目需求中,需要生成6-12数的用户邀请码,并且邀请码可根据用户灵活配置的cron(比如一小时更新一次,一天更新一次)等条件进行更新。因为我是参照这篇文章
https://blog.csdn.net/w1047667241/article/details/109527671 注:仅限于 单机下的调度,不是分布式调度的管理(这个要看清楚哦)
进行复制性开发...,而且功能也是达到了。所以记录下,以后肯定也会用到。
1.要用到定时器任务肯定要在spring-application.xml配置文件先配置好,也可以单独建 spring-task.xml配置,我就是单独建spring-task.xml方式(这个不多说了,网上一大堆)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-4.1.xsd" default-lazy-init="true">
<!--<context:component-scan base-package="cn.pw.manager.*.*.task" />-->
<!-- 定时器开关-->
<task:executor id="executor" pool-size="5" />
<task:scheduler id="scheduler" pool-size="10" />
<task:annotation-driven executor="executor" scheduler="scheduler" />
</beans>
2. 建一个 “ITriggerTask” 接口类代码如下:(这个是完全我是完全复制过来的)
package cn.pw.manager.admin.task;
import org.springframework.scheduling.support.CronTrigger;
/**
* TriggerTask 必须实现的方法,为了支持动态配置 cron表达式
* @author liuYY
* @date 2021-03-11 11:21
*/
public interface ITriggerTask {
/**
* 获取 类别,区分 不同的Bean 对象
* @return
*/
String type();
/**
* 获取 run 方法
* @return
*/
Runnable getTask();
/**
* 获取触发器,一般是 CronTrigger
* @return
*/
CronTrigger getTrigger();
/**
* 接口 动态修改 定时任务的表达式
*/
CronTrigger setTrigger(String cron);
}
3. TriggerTaskSupport抽象类实现 ITriggerTask 接口
package cn.pw.manager.admin.task;
import lombok.extern.slf4j.Slf4j;
/**
* @author liuYY
* @date 2021-3-11 10:29
*/
@Slf4j
public abstract class TriggerTaskSupport implements ITriggerTask {
@Override
public String type() {
return this.getClass().getSimpleName().toLowerCase();
}
@Override
public String toString() {
return "TriggerTask{" +
"type=" + type() +
", task=" + getTask() +
"cronTrigger=" + getTrigger().getExpression() +
'}';
}
}
4.JobsConfigUtil 支持 停止、重启、更新定时任务,反正我只要用到更新定时任务 (如果你们想省事不用管复制过去拿来用就行了