Spring Boot+Mybatis+Quartz+vue的任务管理
废话前言:工作中定时任务使用很普遍,使用上也很简单。就想怎么方便管理?就在网上找一些方便操作带有管理界面的项目直接套用。找了很多总感觉不太合适自己(如集成多数据源+多线程+界面管理任务本项目将都集成进来)。后面我经过很多大神写的教程进行了整合,废话不说直接上代码。
1.项目结构
简单说下:
cofig基础加载的配置
controller层
entity实体层
job任务实现基本新增的job都要开发一个业务类
master/slave多数据源层
utils工具类
service业务逻辑层
resources目录下面是yml文件log文件sqlxml文件以及静态html界面文件
2.pom文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.0.RELEASE</version>
<relativePath/>
</parent>
<groupId>quartz</groupId>
<artifactId>quartz</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.2.3</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.4.1</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.62</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-support</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.7</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.5</version>
<configuration>
<configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile>
<overwrite>true</overwrite>
</configuration>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/**</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
</project>
3.yml文件
这里配置了多数据源(本地运行需自己创建两个数据库修改对应的链接信息即可)对应初始化文件在config里面。项目中使用两个数据库分别创建test表进行测试
application:
server:
name: quartz
server:
servlet:
context-path: /quartz/v1
undertow:
io-threads: 16
worker-threads: 256
buffer-size: 1024
direct-buffers: true
logging:
config: classpath:logback-spring.xml
level:
com:
shuyun:
crmep:
customized: DEBUG
slave:
datasource:
url: jdbc:mysql://localhost:3306/openapi?useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=GMT%2B8
username: root
password: root
driverClassName: com.mysql.jdbc.Driver
master:
datasource:
url: jdbc:mysql://localhost:3306/king?useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=GMT%2B8
username: root
password: root
driverClassName: com.mysql.jdbc.Driver
4.初始化一张默认的表
这张表是我自己加的,可以根据自己想的自行创建
CREATE TABLE `job` (
`job_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`job_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '任务名称',
`job_group` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '分组',
`job_class` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '对应任务称',
`job_cron_exprssion` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT 'cron表达式',
`job_status` int(1) DEFAULT NULL COMMENT '1启用 2 禁用',
`job_update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`job_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1027 DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='定时任务表'
5.项目启动类
类启动后会加载config中的多数源配置+多线程连接池+自定义启动加载界面+初始化数据库中定时任务
package com.quartz.task;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
@EnableScheduling
@EnableAsync
@SpringBootApplication
public class QuartzApplication {
public static void main(String[] args) {
System.out.println("===========================================QuartzApplication start");
SpringApplication.run(QuartzApplication.class, args);
System.out.println("===========================================================success");
}
}
6.运行效果展示
启动成功默认加载任务列表日志
跳转后的任务界面
进行操作修改任务展示
任务新增(如查询的例子进行保存)+任务暂停+任务恢复+任务删除+任务时间修改
界面操作会直接实例化到数据库。(有个问题就是如果数据库中的任务跟真正执行的任务是否对应一致怎么才能知道?在界面请求接口中扩展了一个在运行的任务接口queryRunJob中实现)
总结:
项目可自由集成扩展,就是传统的Spring Boot项目。先丢上来代码如下,后面放git上面优化更新。
尊重原创请转至:https://blog.csdn.net/u012907049/article/details/73801122
源代码:
链接: https://pan.baidu.com/s/16M9raSC-iuCWF4MSgMiZfQ 提取码: vnag