天天看点

《若依ruoyi》第四十二章:若依定时任务管理拆解

作者:源码解析

1、corn表达式

这里是简单的corn表达式,有业务需求的小伙伴可以到在线Cron表达式生成器 (pppet.net)可以生成表达式和反解析

每隔5秒执行一次:*/5 * * * * ?

每隔1分钟执行一次:0 */1 * * * ?

每天23点执行一次:0 0 23 * * ?

每天凌晨1点执行一次:0 0 1 * * ?

每月1号凌晨1点执行一次:0 0 1 1 * ?

每月最后一天23点执行一次:0 0 23 L * ?

每周星期天凌晨1点实行一次:0 0 1 ? * L

在26分、29分、33分执行一次:0 26,29,33 * * * ?

每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?           

首先Bean注入spring

/**
* 任务调度
*/
@Component("testTask")
public class TestTask {

private static Logger logger = LoggerFactory.getLogger(TestTask.class);

public void testTiming(){
System.out.println("测试定时任务---");
}
}           

2、界面操作流程

步骤一:在若依框架的后台管理系统中--系统监控 -- 定时任务

《若依ruoyi》第四十二章:若依定时任务管理拆解

步骤二:点击新增

《若依ruoyi》第四十二章:若依定时任务管理拆解

任务分组根据需求来,不然默认就好,定好任务名称和corn表达式

注意调用方法要与spring组件中的类名及方法名对应

《若依ruoyi》第四十二章:若依定时任务管理拆解

3、调用函数

这里测试的组件类名和方法名

@Component("ryTask")
public class RyTask
{
    public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i)
    {
        System.out.println(StringUtils.format("执行多参方法: 字符串类型{},布尔类型{},长整型{},浮点型{},整形{}", s, b, l, d, i));
    }

    public void ryParams(String params)
    {
        System.out.println("执行有参方法:" + params);
    }

    public void ryNoParams()
    {
        System.out.println("执行无参方法");
    }
}
           

此时点击新增完成之后对应的数据库也会增加数据了,不需要对数据库进行操作。

完成新增后点击立即执行一次

《若依ruoyi》第四十二章:若依定时任务管理拆解
《若依ruoyi》第四十二章:若依定时任务管理拆解

确认后此时项目后台会有日志打印

《若依ruoyi》第四十二章:若依定时任务管理拆解

控制台没有输出的话在定时任务启动状态下重启项目即可。

但是要注意新增定时任务的调用目标方法字符串

如果对应类方法名没有参数的

public void ryNoParams()
{
    System.out.println("执行无参方法");
}           

直接写类名:方法名即可 ryTask.ryNoParams

如果对应类方法名有参数的

ryTask.ryParams('') 两个单引号

出现这个异常

测试01(String), DEFAULT(String), syncXiaoeDataTask:testTask01(")(String), 测试01 总共耗时:1毫秒(String), 1(String), java.lang.NumberFormatException: For input string: """           

说明后台编辑的定时任务与方法入参不对应

仔细检查调用目标方法字符串参数是否出错

《若依ruoyi》第四十二章:若依定时任务管理拆解

对应方法一个没有参数,一个参数,两个参数的分别用两个单引号代表

《若依ruoyi》第四十二章:若依定时任务管理拆解