RuoYi学习-基于RuoYi建立干净的定时任务项目

1. 目标

基于RuoYi 3.9.2版本的分离版做一套定时任务程序。
只保留quartz定时任务功能。
只保留sys_job、sys_job_log和qrtz_开头的数据表。
其它的功能统统去掉。

2. 操作步骤

2.1 删除无用的模块/依赖

  1. 移除 ruoyi-generator 模块

  2. 移除 ruoyi-system 模块
    注意需要在 ruoyi-framework 模块的 pom.xml 里引入:

        <!-- 通用工具-->
        <dependency>
            <groupId>com.ruoyi</groupId>
            <artifactId>ruoyi-common</artifactId>
        </dependency>
  1. 删除 ruoyi-ui 文件夹

最终在根 pom.xmlruoyi-adminpom.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 以外所有包:
删除:systemmonitorcommoncaptchatool 等全部文件夹

保留: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
文件夹改名:
ruoyischeduledtask
RuoYiScheduledTask
文件改名:
ruoyischeduledtask
RuoYiScheduledTask
字符串改名:
ruoyischeduledtask
RuoYiScheduledTask
版本号修改:
3.9.21.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

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 的配置。

4.2 资料

posted @ 2026-06-11 17:33  梦魇  阅读(4)  评论(0)    收藏  举报