小柒2012 / spring-boot-quartz

介绍了一个基于Spring Boot和Quartz的CRUD动态任务管理系统,包括定时任务管理、分布式任务调度等,适合中小型项目使用,提供了任务新增、修改、执行、移除等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

spring-boot-quartz

基于spring-boot+quartz的CRUD动态任务管理系统,适用于中小项目。

基于spring-boot 2.x +quartz 的CRUD任务管理系统:https://gitee.com/52itstyle/spring-boot-task

几种任务调度

  • Timer,简单无门槛,一般也没人用。

  • spring @Scheduled注解,一般集成于项目中,小任务很方便。

  • 开源工具 Quartz,分布式集群开源工具,以下两个分布式任务应该都是基于Quartz实现的,可以说是中小型公司必选,当然也视自身需求而定。

  • 分布式任务 XXL-JOB,是一个轻量级分布式任务调度框架,支持通过 Web 页面对任务进行 CRUD 操作,支持动态修改任务状态、暂停/恢复任务,以及终止运行中任务,支持在线配置调度任务入参和在线查看调度结果。

  • 分布式任务 Elastic-Job,是一个分布式调度解决方案,由两个相互独立的子项目 Elastic-Job-Lite 和 Elastic-Job-Cloud 组成。定位为轻量级无中心化解决方案,使用 jar 包的形式提供分布式任务的协调服务。支持分布式调度协调、弹性扩容缩容、失效转移、错过执行作业重触发、并行调度、自诊。

开发环境

JDK1.7、Maven、Eclipse

技术栈

SpringBoot1.5.2、thymeleaf、quartz2.3.0、iview、vue、layer、AdminLTE、bootstrap

启动说明

友情提示

由于工作原因,项目正在完善中(仅供参考),随时更新日志。

项目截图

输入图片说明

输入图片说明

输入图片说明

输入图片说明

输入图片说明

输入图片说明

表达式生成器

已实现功能

  • 任务列表
  • 任务新增和修改
  • 任务执行
  • 表达式生成器(集成:https://gitee.com/finira/cronboot)
  • 任务移除
  • Job中注入service为空的问题
  • 系统启动,如果数据库任务为零则初始化测试任务,用于测试

待集成功能

  • 系统登录以及权限管理
  • 任务停止和开启
  • 任务列表搜索以及分页
### 改造 `spring-boot-starter-quartz` 源码 为了实现对 `spring-boot-starter-quartz` 的改造,可以遵循以下方法来满足特定的自定义需求: #### 1. 获取并理解现有代码结构 首先克隆 Spring Boot GitHub仓库中的相应版本分支,找到 `spring-boot-starters` 下的 `spring-boot-starter-quartz` 文件夹。这里包含了 Quartz Starter 所有必要的配置类和服务组件。 ```bash git clone https://github.com/spring-projects/spring-boot.git --branch v2.1.0.RELEASE cd spring-boot/spring-boot-project/spring-boot-starters/spring-boot-starter-quartz/ ``` 此操作允许深入研究当前启动器的工作机制及其依赖注入模式[^1]。 #### 2. 修改或扩展功能 针对具体业务逻辑的需求调整,可以通过继承原有类或者创建新的服务 bean 来完成。例如,如果希望更改默认的任务调度策略,则可以在项目中添加如下 Java 配置类: ```java @Configuration public class CustomQuartzConfig { @Autowired private DataSource dataSource; @Bean public JobFactory jobFactory() { AutowireCapableBeanFactory factory = applicationContext.getAutowiringSupport().getAutowireCapableBeanFactory(); return new AdaptableJobFactory(factory); } @Bean public SchedulerFactoryBean schedulerFactoryBean(JobFactory jobFactory) throws IOException { SchedulerFactoryBean factory = new SchedulerFactoryBean(); factory.setOverwriteExistingJobs(true); factory.setAutoStartup(true); factory.setDataSource(dataSource); factory.setJobFactory(jobFactory); // 自定义属性设置 Properties prop = new Properties(); prop.put("org.quartz.scheduler.instanceName", "CustomScheduler"); prop.put("org.quartz.threadPool.threadCount", "3"); factory.setQuartzProperties(prop); return factory; } } ``` 这段代码展示了如何通过覆盖原有的 Bean 定义来自定义任务工厂以及调度器的行为特性[^2]。 #### 3. 解决潜在冲突问题 对于提到的同时引入 `spring-boot-starter-websocket` 和 `spring-boot-starter-quartz` 导致 NullBean 错误的情况,在上述例子的基础上进一步确保 TaskScheduler 实例化的唯一性和正确性非常重要。这可能涉及到检查是否有重复注册相同类型的 Beans 或者调整自动装配顺序等问题。 #### 4. 测试验证改动效果 最后一步是对所做的任何变更进行全面测试,包括单元测试和集成测试,以确认新行为符合预期,并且不会破坏其他部分的功能稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值