JFinal使用技巧-深度把玩jfinal core的Config

随着JF5.0的发布,感觉大家讨论的热情又上来了😺~ 
今天看到群里社友在说JFinalConfig子类的几个抽象方法参数,想二次把玩时,需要编写代码进行二次存放,不方便。
我这里分享一个以前无感把玩JF的Config写法:

1、先在项目中建一个包:com.jfinal.core 这个名称很重要,不能变。
2、里面建一个类 ConfigCPI.java

package com.jfinal.core;

import com.jfinal.config.Constants;
import com.jfinal.config.Handlers;
import com.jfinal.config.Plugins;
import com.jfinal.config.Routes;
import com.jfinal.template.Engine;

/**
 * 深度扩展:jfinal core的Config 谨慎使用,需熟读源码
 */
public class ConfigCPI {

    public static final Constants getConstants() {
        return Config.getConstants();
    }

    public static final Routes getRoutes() {
        return Config.getRoutes();
    }

    public static final Engine getEngine() {
        return Config.getEngine();
    }

    public static final Plugins getPlugins() {
        return Config.getPlugins();
    }

    public static Handlers getHandlers() {
        return Config.getHandlers();
    }

}

好,项目其他地方调用时,可直接写:

public static void main(String[] args) {
    ConfigCPI.getEngine().getTemplate("xxx");
}

再次提醒,谨慎使用,不熟悉源码的社友谨慎使用,用不好容易翻车,这也是官码没提供的原因之一吧。

有意思点个赞呗~ 

评论区

JFinal

2022-05-12 00:02

有些配置是可以直接拿到的,例如:
RenderManager.me().getEngine();
JFinal.me().getConstants();

daisy1024

2022-05-17 17:01

@JFinal 有个需求,程序的数据源是不确定的,这个不确定来源于两方面:一方面是没有配置在配置文件中;另一方面是程序运行中可能需要接收配置参数来生成DruidPlugin,这个时候是不是可以将动态生成的dbplugin放到Plugins里面管理呀?

杜福忠

2022-05-17 18:26

@daisy1024 你说的这个业务感觉用MAP 管理更合适(我用的MAP),DruidPlugin 可以独立启动和关闭的,不需要配置文件。 上面分享的这种方式,是我们之前用的一种把多个JFinal项目当做一个项目的小模块应用去管理,在线安装更新卸载的管理方式。用了上面的方式,接管了JF几个Config对象的生命周期。新项目都换成了JF的Enjoy驱动了,变成了函数式接口,不是应用模块式开发了

JFinal

2022-05-17 19:30

@杜福忠 同学是正解 @daisy1024

自己管理各种 Plugin 即可,jfinal 中的 plugin 可以独立创建、启动、关闭