基础框架默认提供4种方式创建定时任务,分别是 JavaBean 、SpringBean 、 HTTP 以及函数。
JavaBean
通过JavaBean创建定时任务,需要先在后端新建一个JavaBean以供页面上使用。先在自己的工程中新建一个 JavaBeanJob 类,代码如下
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.ReflectionUtils;
import java.lang.reflect.Method;
@Slf4j
public class JavaBeanJob {
public void noParam() {
log.info("Java Bean 无参方法执行");
}
public void haveParam(String param) {
log.info("Java Bean 有参方法执行:" + param);
}
}
重新启动项目,然后进入后台页面,选择【其他】下的【定时任务】,并选择新增按钮,在弹出的表单中依照下图填写相应内容:
保存之后选择立即执行,就会去该 className对应的全路径名去工程中寻找相应的JavaBean,然后调用对应的方法,结果如下:
同时也可以在【定时任务】的【日志列表】中看到执行成功的日志消息:
SpringBean
通过 SpringBean 创建定时任务,需要后端提供一个 SpringBean 以供页面上使用。可以先在自己的工程中新建一个 SpringBeanJob 类,代码如下:
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.util.ReflectionUtils;
import java.lang.reflect.Method;
/**
* @author liuchengbiao
* @date 2019/4/23 上午10:10
*/
@Slf4j
@Component("springBeanJob")
public class SpringBeanJob {
public void noParam() {
log.info("springBean无参方法执行");
}
public void haveParam(String param) {
log.info("springBean有参方法执行:" + param);
}
}
重新启动项目,然后进入后台页面,选择【其他】下的【定时任务】,并选择新增按钮,在弹出的表单中依照下图填写相应内容:
保存之后选择立即执行,就会去工程对应的 spring 容器中寻找注入的 bean 名称为 springBeanJob 的类,然后调用对应的方法,结果如下:
同时也可以在【定时任务】的【日志列表】中看到执行成功的日志消息:
HTTP
在【其他】下的【定时任务】中选择新增按钮,并在弹出的表单中选择HTTP类型,在其中填写需要定时调用的接口相关的地址、参数等:
保存后,点击立即执行按钮,并进入【定时任务】下的日志列表中,可以看到一条执行成功的日志:
函数
在【其他】下的【定时任务】中选择新增按钮,并在弹出的表单中选择函数类型,在其中填写相应的内容:
示例:
try {
Response response = HttpUtils.get("http://v1.alapi.cn/api/soul", null);
if (response.isSuccessful()) {
System.out.println("调用接口成功");
} else {
System.out.println("接口调用失败");
}
} catch (IOException e) {
}
保存后,点击立即执行按钮,并进入【定时任务】下的日志列表中,可以看到一条执行成功的日志:
同时在【系统日志】下的【控制台】或者项目控制台中可以看到如下提示成功的信息:
注意:
- 此处采用的是 groovy 脚本语言,是一种基于JVM(Java虚拟机)的敏捷开发语言 ,能够与 Java 代码很好地结合
- 系统默认导入了部分工具类,用户在进行脚本开发时,不需要在脚本中再次导入,可以直接使用如下工具类:
java import com.ustcinfo.ishare.eip.admin.common.utils.HttpUtils; import okhttp3.Response; import java.io.IOException; import com.alibaba.fastjson.*; import org.apache.commons.lang3.*; import com.google.common.collect.*; import java.util.*; import java.lang.*;