既然是动态就必须牵扯到数据库
-- ----------------------------
-- Table structure for scheduled_task
-- ----------------------------
DROP TABLE IF EXISTS `scheduled_task`;
CREATE TABLE `scheduled_task` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`task_key` varchar(128) NOT NULL COMMENT '任务key值(使用bean名称)',
`task_desc` varchar(128) DEFAULT NULL COMMENT '任务描述',
`task_cron` varchar(128) NOT NULL COMMENT '任务表达式',
`init_start_flag` int(2) NOT NULL DEFAULT '1' COMMENT '程序初始化是否启动 1 是 0 否',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uniqu_task_key` (`task_key`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of scheduled_task
-- ----------------------------
INSERT INTO `scheduled_task` VALUES ('1', 'scheduledTask01', '定时任务01', '0/5 * * * * ?', '1', '2019-11-22 09:40:56', '2019-11-22 14:27:15');
INSERT INTO `scheduled_task` VALUES ('2', 'scheduledTask02', '定时任务02', '0/2 * * * * ?', '0', '2019-11-22 09:40:58', '2019-11-22 15:33:49');
创建spring Boot项目 基本的依赖就OK
比如(spring-boot-starter-web/spring-boot-starter-parent)
我用的是springBoot 2.2.1 +mybatis-plus+druid 数据库访问层根据你们自己比较熟悉的框架引用依赖就好
<!-- 设置我们项目的一些版本属性 -->
<properties>
<java.version>1.8</java.version>
<mybatis-puls.version>3.2.0</mybatis-puls.version>
<mysql.version>5.1.31</mysql.version>
</properties>
<!-- mysql驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<!-- 配置阿里druid连接池,通过改变spring.datasource.type设置数据源 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-puls.version}</version>
</dependency>
接下来配置你们的数据源 ,我用的多数据源就懒得贴出来了,就按你们最基本的配置能访问数据库就成哈哈哈哈哈!
好了正式开始了
1.首先要创建任务javaBean
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class ScheduledTask implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 任务key值(使用bean名称)
*/
private String taskKey;
/**
* 任务描述
*/
private String taskDesc;
/**
* 任务表达式
*/
private String taskCron;
/**
* 程序初始化是否启动 1 是 0 否
*/
private Integer initStartFlag;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
/**
* 当前是否启动
*/
private boolean startFlag;
}
2.创建你们的mapper
我没有使用BaseMapper ,你们想怎么写就怎么写 ,只要有以下几个方法的效果就行
public interface ScheduledTaskMapper extends BaseMapper<ScheduledTask> {
/**
* 根据key 获取 任务信息
*/
@Select("select task_key as taskKey,task_desc as taskDesc,task_cron as taskCron,init_start_flag as initStartFlag from scheduled_task where task_key = '${taskKey}' ")
ScheduledTask getByKey(@Param("taskKey") String taskKey);
/**
* 获取程序初始化需要自启的任务信息
*/
@Select("select task_key as taskKey,task_desc as taskDesc,task_cron as taskCron,init_start_flag as initStartFlag from