定时任务(1)--ruoyi-vue分离版

下面主要记录下自己在研究若依中定时任务时遇到的问题和过程。

若依中的定时任务使用的是Quartz。我们先了解几个概念在其中的:

再来看个简单的小段代码:

这里我要说的是,调度器是要启动也就是start才能用的。 这里的1和2 记得没错的话,也可以把2放在先。 就是按好理解的方式先启动,后把要做的job注册进去。

接着回到ruoyi-vue代码。

首先我在代码中没看到调度器启动的start() 这个方法的调用,只看到在

上面这个service里直接开始把job注册进去了(这里涉及到似乎改相关数据需要重启项目才能纠正定时任务的问题,暂不讨论,咱们先讨论quartz启动问题)。也就是说不符合我们网络demo小代码使用quartz的过程。后来各种找,原来在项目启动时quartz自动按标准模式start起来。

我好奇了,为什么demo那些都决口不提自动start问题呢,(后来我也没明白,哎)。

先不管了于是我后来新建了个springboot 2.5.15项目(没有子模块那种),然后引入

<dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz</artifactId>
    <version>2.3.2</version>
    <exclusions>
        <exclusion>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
        </exclusion>
    </exclusions>
</dependency>

上面这个引用是和ruoyi-vue一样的。

结果启动项目是,死活在控制台看不到quartz启动的日志,也就是说没用。

我蒙蔽了,为何ruoyi可以。

而且这个新项目中的service,还不能装配调度器。如下图。这个我也是参考ruoyi的啊。天,,,

后来我又一大顿找,搜索。发现了这个

<!--        <dependency>-->
<!--            <groupId>org.springframework.boot</groupId>-->
<!--            <artifactId>spring-boot-starter-quartz</artifactId>-->
<!--        </dependency>-->

网上有说这个才是专门给springboot用的。

我先试试吧。好家伙居然换这个可以了。

可是原来的-------

<dependency> <groupId>org.quartz-scheduler</groupId>

<artifactId>quartz</artifactId>

<version>2.3.2</version>

<exclusions>

<exclusion>

<groupId>com.mchange</groupId> <artifactId>c3p0</artifactId> </exclusion>

</exclusions>

</dependency>

怎么就不行了,然后又各种搜索倒腾怎么手动装配,以及手动启动调度器。这里代码先忽略了,应该比较容易百度到。虽然乱折腾能解决,可是那就和ruoyi里头的不一样了啊,凭什么ruoyi-vue可以,我的不行,我还得手动装配启动,不爽,奔溃。

经过无数次的瞎搞,发现一个问题难道这个引用还和子模块有关??? ,被迫无奈搞个子模块项目吧,我去。

如上图,也不报错了,装配也正常了,引用和ruoiy-vue一样。主模块还是springboot项目。

定时任务终于也会自己start了。什么鬼。为什么会这样,总结:放在子模块引,就能用quartz

,而且改为spring-boot-starter-quartz 也能用。如果不放在子模块就只能用spring-boot-starter-quartz。

好家伙。我也不知道为何会这样,目前总结出来就是这样。搞了几天。。。。 后续再研究定时任务其他细节。

### 关于 RuoYi-Vue-Plus 中定时任务的实现 #### 后端配置 在 `ruoyi-admin` 项目中,定时任务主要通过 Spring Boot 的调度功能来完成。为了创建一个新的定时任务,开发者需要遵循特定的步骤。 首先,在项目的实体类目录下定义一个用于存储定时任务信息的数据模型。这通常涉及到数据库表的设计以及相应的 Java 类映射[^2]。对于具体的定时任务逻辑,则是在服务层编写业务处理代码,并利用 `@Scheduled` 注解标注的方法来进行周期性的执行操作。例如: ```java import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @Component public class ScheduledTasks { @Scheduled(cron = "0 * * * * ?") // 每分钟触发一次的任务 public void performTask() { System.out.println("Executing scheduled task..."); } } ``` 此外,还需要确保应用程序上下文中启用了对计划任务的支持。可以在主应用类或其他合适的位置添加如下注解以开启此特性: ```java @SpringBootApplication @EnableScheduling public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` #### 前端展示与管理 针对前端部分,`ruoyi-vue-plus` 提供了一个友好的界面让用户能够查看和编辑已有的定时任务设置。当用户访问对应的页面时,会加载来自服务器端的数据并渲染成表格形式显示给用户。如果想要新增或调整某个现有条目的话,可以通过点击按钮弹出对话框填写必要参数后提交保存即可[^3]。 需要注意的是,实际部署环境中的生产级应用应当考虑更复杂的场景如分布式集群下的协调一致性等问题;上述例子仅作为入门指导用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值