1.pom.xml中
<!-- 調度任務 -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.2</version>
</dependency>
2.配置類中 DemoConfig.java
@Override
public void configPlugin(Plugins plugins) {
//讀取xxx.sql文件 該文件定義了項目需要的sql語句 增刪改查之類
//例如:
//#sql("removeAddress")
//UPDATE user SET `status` = ? WHERE user_id = ?
//#end
arp.setBaseSqlTemplatePath(PathKit.getRootClassPath() + "/sqls");
arp.addSqlTemplate("all.sql");
//配置quartz插件
plugins.add(new QuartzPlugin());
}
QuartzPlugin類是implements IPlugin 的類
它加載了任務調度的配置文件quartz.properties和jobs.properties
加載的定時任務存放在Map中;以及獲得cron表達式,最終從jobs.properties中獲得
2.1 jobs.properties 配置文件中
#定時更新(每一分鐘執行一次)
a.job= job執行的任務
a.cron=0 0/1 * * * ? //這裏是jfinal的cron表達式,跟原生的表達式稍微有些區別
a.enable=true
xxxx.job=com.job.OneDayJob//任務調度的類
xxxx.cron=0 58 23 ? * *//cron表達式 我這個是每天的23:58執行一次
xxxx.enable=true //是否開啓 true開 false關閉
2.2 任務調度的類 實現Job的類
public class OneDayJob implements Job {
//一定要實現 Job這個類
//這是個抽象方法
public void execute(JobExecutionContext arg0) throws JobExecutionException {
try {
System.out.println("--------任務調度-----");
} catch (Exception e) {
System.out.println("一天任務調度失敗");
}
}
}
2.3 quartz.properties 配置文件
# 調度器屬性
org.quartz.scheduler.instanceName=myScheduler
org.quartz.scheduler.instanceId=AUTO
org.quartz.scheduler.skipUpdateCheck=true
# 線程池屬性
org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount=5
org.quartz.threadPool.threadPriority=5
# 存儲方式
org.quartz.jobStore.misfireThreshold=600000
org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.useProperties=false
org.quartz.jobStore.dataSource=my
org.quartz.jobStore.tablePrefix=qrtz_
org.quartz.jobStore.isClustered=true
org.quartz.jobStore.clusterCheckinInterval=20000
# 提供數據庫連接
org.quartz.dataSource.my.connectionProvider.class= 數據庫連接類
數據庫連接類實現ConnectionProvider
讀取database.properties 配置文件內容 並初始化連接,進行初始化時添加:
WallFilter wallFilter = new WallFilter();
爲了防禦SQL注入攻擊