共计 1258 个字符,预计需要花费 4 分钟才能阅读完成。
定时工作也算是咱们日常开发中比拟常见的需要了,市面上也有很多成熟的框架:
- quartz
- elastic-job
- xxl-job
- …
不过小伙伴们晓得,其实咱们 Spring 框架中也提供了相应的定时工作,这个定时工作通过 @EnableScheduling
注解开启,松哥之前也写过文章和大家分享这个注解的根本用法:
- Spring Boot 中实现定时工作的两种形式!
不过之前的定时工作都是固定的,提前写死的,没法动静配置,前两天有小伙伴问松哥如何实现定时工作的动静配置?
这个货色要是基于 xxl-job 之类的框架来做其实是比拟容易的,不过用 Spring 自带的 @EnableScheduling
注解其实也能实现,而且并不难,松哥基于此火急火燎的写了一个,明天先和大家聊聊大抵用法,前面抽空再写一篇文章介绍实现原理。
我的项目已开源,我的项目地址:
- https://github.com/lenve/scheduling
食用形式
- 克隆我的项目:
git clone https://github.com/lenve/scheduling.git
。 - 本地数据库创立一个名为
scheduling
的库。 - 批改配置文件
src/main/resources/application.yaml
,次要批改数据库连贯的用户名和地址。 - 启动我的项目。
- 浏览器拜访
http://localhost:8080
,能够看到如下页面:
示意启动胜利。
性能介绍
- 我的项目启动时,会主动从数据库中加载状态为 1 的定时工作并开始执行,1 示意处于开启状态的定时工作,0 示意处于禁用状态的定时工作。
- 点击页面上的 增加作业 按钮,能够增加一个新的定时工作,新工作的 Bean 名称、办法名称以及办法参数如果和已有的记录雷同,则认为是反复作业,反复作业会增加失败。
增加作业的页面如下:
这里波及到几个参数,含意如下:
- Bean 名称:这是我的项目中注入 Spring 的 Bean 名称,测试代码中以
org/javaboy/scheduling02/service/SchedulingTaskDemo.java
为例。 - 办法名称:参数 1 中 bean 里边的办法名称。
- 办法参数:参数 2 中办法的参数。
- Cron 表达式:定时工作的 Cron 表达式。
- 作业状态:开启和禁用两种。开启的话,增加实现后这个定时工作就会开始执行,禁用的话,就单纯只是将记录增加到数据库中。
作业增加胜利提醒如下:
作业增加失败提醒如下:
- 点击作业编辑,能够批改作业的各项数据:
批改后会立马失效。
- 点击作业删除,能够删除一个现有的作业。如果删除的作业正在执行,则先进行该作业,而后删除。
- 点击列表中的 switch 按钮也能够切换作业的状态。
技术栈
- SpringBoot
- Jpa
- MySQL
- Spring Job
- Vue
其余
这是一个学习的 Demo,并非残缺我的项目,前面松哥会出一篇文章和大家分享具体的实现思路。
好啦,先说这么多。
感兴趣的小伙伴连忙去体验一把吧:
- https://github.com/lenve/scheduling
- https://gitee.com/lenve/scheduling
正文完