1 快速上手

2 JFinalConfig

3 Controller

4 AOP

5 ActiveRecord

6 Enjoy 模板引擎

7 EhCachePlugin

8 RedisPlugin

9 Cron4jPlugin

10 Validator

11 国际化

12 Json 转换

13 JFinal架构及扩展

14 升级到 5.1.2

9.3 使用外部配置文件

    上一个示例仅展示了java硬编码式的配置,更多的应用场景是使用外部配置文件,灵活配置调度策略,以便于随时改变调度策略,如下是外部配置的代码示例:

cron4j=task1, task2
task1.cron=* * * * *
task1.class=com.xxx.TaskAaa
task1.daemon=true
task1.enable=true

task2.cron=* * * * *
task2.class=com.xxx.TaskBbb
task2.daemon=true
task2.enable=false

    上例中的cront4j是所谓的配置名称:configName,可以随便取名,这个名称在创建Cron4jPlugin对象时会被用到,如果创建Cron4jPlugin对象时不提供名称则默认值为 "cron4j"。

    上例中的configName后面紧跟着的是task1、task2,表示当前配置的两个task 的名称,这两个名称规定了后续的配置将以其打头,例如后面的task1.cron、task2.cron都是以这两个task名称打头的。

    上例中的task1.cron是指该task的cron表达式,task1.class是指该task要调度的目标java类,该java类需要实现Runnable接口,task1.daemon是指被调度的任务线程是否为守护线程,task1.enable是指该task是开启还是停用,这个配置不是必须的,可以省略,省略时默认表示开启。同理task2的配置与task1的意义相同,只是taskName不同。

    总结一下:configName指定taskName,多个taskName可以逗号分隔,而每个taskName指定具体的task,每个具体的task有四项配置:cron、class、deamon、enable,每个配置以taskName打头。

   假定配置文件名为config.txt,配置完成以后Cron4jPlugin的创建方式可以如下:

cp = new Cron4jPlugin("config.txt");
cp = new Cron4jPlugin("config.txt", "cron4j");

cp = new Cron4jPlugin(PropKit.use("config.txt"));
cp = new Cron4jPlugin(PropKit.use("config.txt"), "cron4j");

me.add(cp);

    以上代码中,前四行代码是利用配置文件创建Cron4jPlugin对象的四种方式,第一行代码只传入了配置文件名,省去了configName,那么默认值为“cron4j”。第二代码与第一行代码本质一样,只是指定了其configName。第三与第四行代码与前两行代码类似,仅仅是利用PropKit对其进行了加载。

    请注意:这里所说的configName,就是前面示例中配置项 cron4j=task1, task2 中的 "cron4j",这个configName相当于就是Cron4jPlugin寻找的配置入口。