JFinal的定时可以使用插件:
1.首先在pom.xml文件引入插件包
<!-- https://mvnrepository.com/artifact/cn.dreampie/jfinal-quartz -->
<dependency>
<groupId>cn.dreampie</groupId>
<artifactId>jfinal-quartz</artifactId>
<version>0.2</version>
</dependency>
/**
* 配置插件
*/
public void configPlugin(Plugins me) {
// 配置C3p0数据库连接池插件
DruidPlugin druidPlugin = new DruidPlugin(PropKit.get("jdbcUrl"), PropKit.get("user"), PropKit.get("password").trim());
me.add(druidPlugin);
// 配置ActiveRecord插件
ActiveRecordPlugin arp = new ActiveRecordPlugin(druidPlugin);
//显示sql语句
arp.setShowSql(true);
// 所有映射在 MappingKit 中自动化搞定
_MappingKit.mapping(arp);
me.add(arp);
/*配置定时任务*/
QuartzPlugin quartz = new QuartzPlugin();
quartz.setJobs("quarter.properties"); //下面创建properties文件名称
me.add(quartz);
}
job.channel.class = com.bf.bitCoins.quarter.DoTimeController #需要定时的类
job.channel.group = default
job.channel.id = 1
job.channel.cron = 0/4 0/1 * * * ?
job.channel.enable = true
tp:定时的限制使用的是cron表达式,可以在http://cron.qqe2.com/上直接获取
package com.bf.bitCoins.quarter;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import com.bf.bitCoins.controller.BaseController;
import com.bf.bitCoins.utils.DateUtil;
public class DoTimeController extends BaseController implements Job {
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println(DateUtil.getTodayTimeString());
}
}
上面的方法如果是多个定时就会比较冗余了,所以我们可以使用另外一个方法:
1.首先在pom.xml文件引入插件包
<dependency>
<groupId>it.sauronsoftware.cron4j</groupId>
<artifactId>cron4j</artifactId>
<version>2.2.5</version>
</dependency>
public void configPlugin(Plugins me) {
// 配置C3p0数据库连接池插件
DruidPlugin druidPlugin = new DruidPlugin(PropKit.get("jdbcUrl"), PropKit.get("user"), PropKit.get("password").trim());
me.add(druidPlugin);
// 配置ActiveRecord插件
ActiveRecordPlugin arp = new ActiveRecordPlugin(druidPlugin);
//显示sql语句
arp.setShowSql(true);
// 所有映射在 MappingKit 中自动化搞定
_MappingKit.mapping(arp);
me.add(arp);
/*配置定时任务*/
/*QuartzPlugin quartz = new QuartzPlugin();
quartz.setJobs("quarter.properties");
me.add(quartz);*/
Cron4jPlugin cp = new Cron4jPlugin(PropKit.use("quarter.properties"), "cron4j");
me.add(cp);
}
#job.channel.class = com.bf.bitCoins.quarter.DoTimeController
#job.channel.group = default
#job.channel.id = 1
#job.channel.cron = 0 0/5 * * * ?
#job.channel.cron = 0 0 0 L * ? *
#job.channel.enable = true
cron4j = task1,task2 #可以定义多个定时的规则以及方法,直接使用“,”隔开
#task1.cron = 0 0/5 * * * ?
task1.cron = 0/5 * * * *
task1.class = com.bf.bitCoins.quarter.DoTimeController2
task1.daemon = true
task1.enable = true
task2.cron = 0 0/5 * * * ?
task2.class = com.bf.bitCoins.quarter.DoTimeController
task2.daemon = flase
task2.enable = true
这个插件的corn表达式定义规则跟上面的不一样,规则如下:
* cron 表达式由五部分组成:分 时 天 月 周
* 分 :从 0 到 59
* 时 :从 0 到 23
* 天 :从 1 到 31,字母 L 可以表示月的最后一天
* 月 :从 1 到 12,可以别名:jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov" and "dec"
* 周 :从 0 到 6,0 表示周日,6 表示周六,可以使用别名: "sun", "mon", "tue", "wed", "thu", "fri" and "sat"
*
* 数字 n:表示一个具体的时间点,例如 5 * * * * 表示 5 分这个时间点时执行
* 逗号 , :表示指定多个数值,例如 3,5 * * * * 表示 3 和 5 分这两个时间点执行
* 减号 -:表示范围,例如 1-3 * * * * 表示 1 分、2 分再到 3 分这三个时间点执行
* 星号 *:表示每一个时间点,例如 * * * * * 表示每分钟执行
* 除号 /:表示指定一个值的增加幅度。例如 n/m表示从 n 开始,每次增加 m 的时间点执行
package com.bf.bitCoins.quarter;
public class DoTimeController2 extends BaseController implements Runnable {@Overridepublic void run() {System.out.println(DateUtil.getTodayTimeString());import com.bf.bitCoins.controller.BaseController; import com.bf.bitCoins.utils.DateUtil;
}}