JFinal定时任务 maven

殳越
2023-12-01

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>

2.在JFinal的插件处注册

/**
	 * 配置插件
	 */
	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);
	}

3.定义一个properties文件,放置在resources文件夹下,其中写上其中的属性

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/上直接获取



4.创建需要定时类,此类需要实现Job接口(此处实现的是org.quartz.Job)

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>


2.在JFinal的插件处注册

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);
}

3.定义一个properties文件,放置在resources文件夹下,其中写上其中的属性

#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 的时间点执行


4.创建需要定时类,此类需要实现Runnable接口

package com.bf.bitCoins.quarter;

import com.bf.bitCoins.controller.BaseController;
import com.bf.bitCoins.utils.DateUtil;
public class DoTimeController2 extends BaseController implements Runnable {@Overridepublic void run() {System.out.println(DateUtil.getTodayTimeString());
}}

 类似资料: