RuoYi学习-基于RuoYi建立干净的定时任务项目
1. 目标
基于RuoYi 3.9.2版本的分离版做一套定时任务程序。
只保留quartz定时任务功能。
只保留sys_job、sys_job_log和qrtz_开头的数据表。
其它的功能统统去掉。
2. 操作步骤
2.1 删除无用的模块/依赖
-
移除 ruoyi-generator 模块
-
移除 ruoyi-system 模块
注意需要在ruoyi-framework模块的pom.xml里引入:
<!-- 通用工具-->
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common</artifactId>
</dependency>
- 删除 ruoyi-ui 文件夹
最终在根 pom.xml 和 ruoyi-admin 的 pom.xml 里只保留:
<!-- 核心 -->
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-framework</artifactId>
</dependency>
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-quartz</artifactId>
</dependency>
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common</artifactId>
</dependency>
2.2 删除无用的 java 包
直接删除 ruoyi-admin/src/main/java/com/ruoyi/web/controller/ 下除了 job 以外所有包:
删除:system、monitor、common、captcha、tool 等全部文件夹
保留:ruoyi-quartz/src/main/java/com/ruoyi/quartz/controller/
2.3 删除或者注释操作日志切面类
方案 1:直接删除整个 LogAspect.java(最简单、最干净)
路径:
ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java
方案 2:如果你不想删文件,就注释掉所有代码
打开 LogAspect.java,全部注释,变成空文件。
2.4 修改 AsyncFactory.java
AsyncFactory 是异步任务工厂,里面有个方法用来记录操作日志,用到了:
import com.ruoyi.system.domain.SysOperLog;
路径:
ruoyi-framework/src/main/java/com/ruoyi/framework/manager/factory/AsyncFactory.java
注释掉recordLogininfor方法里操作数据库的代码。
注释掉 public static TimerTask recordOper(final SysOperLog operLog) 方法。
2.5 删除用户、权限、角色相关类
目录路径:
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/
SysLoginService.java
SysPermissionService.java
UserDetailsServiceImpl.java
SysRegisterService.java
2.6 项目重命名
根目录名称: ma-scheduledtasks
文件夹改名:
ruoyi → scheduledtask
RuoYi → ScheduledTask
文件改名:
ruoyi → scheduledtask
RuoYi → ScheduledTask
字符串改名:
ruoyi → scheduledtask
RuoYi → ScheduledTask
版本号修改:
3.9.2 → 1.0.0
2.7. 建立数据库
数据库名称: scheduledtasks
数据库字符集: utf8mb4
数据库排序规则: utf8mb4_0900_ai_ci
创建数据表:
sys_job
sys_job_log
qrtz_开头的11个数据表
[!IMPORTANT]
RuoYi框架中,
ScheduleConfig.java默认是注释掉的。这会导致qrtz_开头的11个数据表不起任何作用。如果保持单机部署,则不需要创建qrtz_开头的11个数据表。
3. 测试
使用sql修改 sys_job 表的数据,检查定时任务是否可以正确运行。
-- 启用任务
UPDATE sys_job SET status='0' WHERE job_id=1 AND job_name='系统默认(无参)' AND job_group='DEFAULT';
-- 禁用任务
UPDATE sys_job SET status='1' WHERE job_id=1 AND job_name='系统默认(无参)' AND job_group='DEFAULT';
4. 附录
4.1 随记
4.1.1 swagger
-
swagger的扫描配置
ruoyi-admin 中的 application.yml :
# 增加扫描 com.ruoyi.quartz.controller 。把 com.ruoyi.quartz.controller 下的接口也显示到 swagger 中。
packages-to-scan: com.ruoyi.web.controller.tool, com.ruoyi.quartz.controller
或者配置多个 - group:
group-configs:
- group: 'default'
display-name: '测试模块'
paths-to-match: '/**'
packages-to-scan: com.ruoyi.web.controller.tool
# packages-to-scan: com.ruoyi.web.controller.tool,com.ruoyi.quartz.controller
- group: 'quartz'
display-name: '定时任务模块'
paths-to-match: '/**'
packages-to-scan: com.ruoyi.quartz.controller
- 修改swagger的配置
SwaggerConfig.java
4.1.2 Redis
如果定时任务中没有使用到 RedisCache redisCache,则不会触发Redis连接,此时可以从 application.yml 里去掉 Redis 的配置。

浙公网安备 33010602011771号