今天实现了在JFinal框架项目中添加定时任务的功能,这里总结下:
1.在BaseConfig的configPlugin中增加任务调度插件
public class BaseConfig extends JFinalConfig {
……
/**
* 配置插件
*/
public void configPlugin(Plugins me) {
……
// 任务调度插件
me.add(new Cron4jPlugin(PropKit.use("conf/task.properties")));
}
}
2.task.properties配置
# 配置有哪些 task 需要被调度,多个任务名称可用逗号分隔
cron4j = queryCron,queryCrontwo
# cron 表达式调试任务
queryCron.cron = 00 00 * * *
# 调试线程是否设置为守护线程,默认值为 true,守护线程会在 tomcat 关闭时自动关闭
queryCron.daemon = true
# 执行任务的类文件
queryCron.class = com.aisino.api.task.QueryIndexTask
# 任务是否有效,默认值为 true,为 false 时该任务无效,不会被调用
queryCron.enable = false
#生成当月的数据表定时任务
# cron 表达式调试任务
queryCrontwo.cron = 00 01 * * *
# 调试线程是否设置为守护线程,默认值为 true,守护线程会在 tomcat 关闭时自动关闭
queryCrontwo.daemon = true
# 执行任务的类文件
queryCrontwo.class = com.aisino.api.task.QueryIndexTwoTask
# 任务是否有效,默认值为 true,为 false 时该任务无效,不会被调用
queryCrontwo.enable = true
cron表达式: 00 01 * * * 分别对应:分 时 日 月 星期,这个表达式表示这个任务将在任意月、任意日、01点00分执行。
3.实现定时任务task
public class QueryIndexTask implements ITask {
@Override
public void run() {
System.out.println("任务开始了");
}
@Override
public void stop() {
System.out.println("任务结束了");
}
}
自定义task要继承ITask。