# SingletonDynamicScheduler 单例动态定时任务调度器 **Repository Path**: mo_zhenshuang/singleton-dynamic-scheduler ## Basic Information - **Project Name**: SingletonDynamicScheduler 单例动态定时任务调度器 - **Description**: 该项目目前实现了单例动态定时任务调度器,支持动态添加、修改、删除定时任务(即时生效),并支持定时任务持久化。 - **Primary Language**: Java - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-02-21 - **Last Updated**: 2025-02-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SingletonDynamicScheduler 单例动态定时任务调度器 ## 1. 介绍 该项目目前实现了单例动态定时任务调度器,支持动态添加、修改、删除定时任务(`即时生效`),并支持定时任务持久化。 ## 2. 模块结构 项目的模块说明如下,具体的项目目录树在最后: - configuration 项目配置包,用于配置项目。该项目中包含了定时任务调度器配置类SchedulerConfig。 - constant 常量包,用于封装常量,如:枚举类、常量类等。 - controller 属于控制层,用于接收请求,并调用业务逻辑层。在这里,主要实现了定时任务管理接口,包含添加、修改、删除定时任务。 - model 属于数据模型层,用于封装数据,项目中有三种数据模型,分别是:PO、VO、DTO。它们的用途如下: - DTO:用于封装请求参数,并传递给业务逻辑层。 - PO:用于封装数据库实体和封装数据库查询结果。 - VO:用于封装响应结果。 - service 业务逻辑层,封装了业务逻辑,并调用数据模型层实现数据库操作。impl包里实现了具体的业务逻辑。在impl包中有一个TaskDemo类,用于演示如何使用定时任务调度器来执行定时任务。 - utils 工具类,封装了工具方法,如:UUID生成工具类、Spring工具类等,并提供了定时任务调度器工具类,用于实现定时任务调度。 - SqlScripts 存储SQL脚本,用于创建数据库表。 - resources 存储项目资源,如:配置文件、SQL脚本等。 ## 3. 使用说明 1. 创建数据库,并执行SQL脚本,创建数据库表。 2. 创建项目,并引入依赖。 3. 修改配置文件`application.yml`,配置数据库连接信息、服务监听端口号以及接口根地址,现在默认的端口号为8300,默认的接口根地址为`/api`。 4. 启动项目,访问项目接口即可开始管理定时任务。 ## 4. 示例 ### 4.1 接口示例 1. 添加定时任务接口: - 请求地址:`http://127.0.0.1:8300/api/scheduler-tak/create` - 请求方法:`POST` - 请求参数: ``` json { "beanName":"TaskDemo", "methodName":"doTask", "methodParams":"你好", "cronExpression":"0/1 * * * * ? ", "taskStatus":"ENABLED", "remark":"备注" } ``` - 响应参数 ```json true ``` 2. 编辑定时任务接口 - 请求地址:`http://127.0.0.1:8300/api/scheduler-tak/update` - 请求方法:`POST` - 请求参数: ``` json { "unCode":"4a7aa10d0c3f488cb8c6036c320068bd", "beanName":"TaskDemo", "methodName":"doTask", "methodParams":"修改测试", "cronExpression":"0/2 * * * * ? ", "taskStatus":"ENABLED", "remark":"备注" } ``` - 响应参数 ```json true ``` 3. 删除定时任务接口 - 请求地址:`http://127.0.0.1:8300/api/scheduler-tak/update` - 请求方法:`POST` - 请求参数: ``` json { "unCode":"4a7aa10d0c3f488cb8c6036c320068bd", "beanName":"TaskDemo", "methodName":"doTask", "methodParams":"修改测试", "cronExpression":"0/2 * * * * ? ", "taskStatus":"ENABLED", "remark":"备注" } ``` - 响应参数 ```json true ``` ## 5. 联系方式 - 邮箱:think_mzs@qq.com ## 6.项目目录树 ```angular2html ├─src │ ├─main │ │ ├─java │ │ │ └─cool │ │ │ └─webstudy │ │ │ └─singletondynamicscheduler │ │ │ │ SingletonDynamicSchedulerApplication.java │ │ │ │ │ │ │ ├─configuration │ │ │ │ └─scheduler │ │ │ │ SchedulerConfig.java │ │ │ │ │ │ │ ├─constant │ │ │ │ └─enums │ │ │ │ DelFlagEnum.java │ │ │ │ EnabledStatusFlagEnum.java │ │ │ │ │ │ │ ├─controller │ │ │ │ └─scheduler │ │ │ │ SchedulerTaskController.java │ │ │ │ │ │ │ ├─mapper │ │ │ │ └─scheduler │ │ │ │ SchedulerTaskRecordMapper.java │ │ │ │ │ │ │ ├─model │ │ │ │ ├─dto │ │ │ │ │ └─scheduler │ │ │ │ │ CreateSchedulerTaskDTO.java │ │ │ │ │ UpdateSchedulerTaskDTO.java │ │ │ │ │ │ │ │ │ ├─po │ │ │ │ │ │ BaseModel.java │ │ │ │ │ │ │ │ │ │ │ └─scheduler │ │ │ │ │ SchedulerTaskRecordPO.java │ │ │ │ │ │ │ │ │ └─vo │ │ │ │ └─scheduler │ │ │ ├─service │ │ │ │ │ ISchedulerTaskService.java │ │ │ │ │ │ │ │ │ └─impl │ │ │ │ SchedulerTaskServiceImpl.java │ │ │ │ TaskDemo.java │ │ │ │ │ │ │ └─utils │ │ │ │ UUIDUtil.java │ │ │ │ │ │ │ └─scheduler │ │ │ CronTaskRegistrar.java │ │ │ InitSchedulerConfigRunner.java │ │ │ ScheduledTask.java │ │ │ SchedulerRunnable.java │ │ │ SpringContextUtils.java │ │ │ │ │ └─resources │ │ │ │ │ └─scripts │ │ │ application.properties │ │ │ application.yml │ │ └─mysql │ │ │ │ │ └─ddl │ │ singleton_dynamic_scheduler.sql ```