JFinal为什么没有配置文件,为什么不把配置写在文件中呢?

walker2011 发布于 2012/03/20 15:36
阅读 2K+
收藏 0

【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”

这个我看过demo之后有点疑问!
加载中
0
JFinal
JFinal
    JFinal设计原则之一是零配置,配置文件配置起来比较麻烦,而且不像Java程序那样有语法检查;另外JFinalConfig的是API引导式配置,这样开发者就无需太花时间记忆配置含义,因为JFinaoConfig中的API会很清楚地告诉你配置的含义,例如constant.setDevMode(true),又如routes.add("blog", BlogController.class),方法名与方法参数已经明确告诉你配置的含义了。 但是有些配置是必不少的,例如数据库连接ip、用户名、密码,所以JFinalConfig继承类中可以调用loadPropertyFile(String)来加载少量必要的配置,并在随后使用 getPropert(String)获取配置文件中的配置。所以JFinal主张零配置,但兼顾必要的配置。
walker2011
walker2011
有点明白了,回头我也写个例子试试!
0
开源老码农
开源老码农

这样强制零配置对于插件的开发会有一些影响啊,如果JFinal有一个properties文件,就可以简单地传递到start(Properties)方法中,这样插件就可以读取自己的配置了。现在插件在start方法中没有办法获取自己的配置。

建议还是加上简单的配置机制,即便JFinal自己不用,插件开发者也有一个机会让用户配置。

0
JFinal
JFinal

引用来自“罗格林”的答案

这样强制零配置对于插件的开发会有一些影响啊,如果JFinal有一个properties文件,就可以简单地传递到start(Properties)方法中,这样插件就可以读取自己的配置了。现在插件在start方法中没有办法获取自己的配置。

建议还是加上简单的配置机制,即便JFinal自己不用,插件开发者也有一个机会让用户配置。

    如你所言, JFinal 一直就是这么做的。 只不过配置不在start()方法上,而是单独的loadPropertyFile(),这样就可以在任何地方加载多个配置了。JFinal 提倡合理的约定优于配置,但也是可以配置的,因为有些配置是有必要的,例如,数据库连接用户名密码等等。

    可以通过 JFinal demo 这个例子看到 JFinal 关于配置的处理。

0
开源老码农
开源老码农
该评论暂时无法显示,详情咨询 QQ 群:点此入群
0
JFinal
JFinal

引用来自“罗格林”的答案

在应用程序中怎么做都好。不过插件开发有点不太一样。比方说我要做一个生产PDF的插件,依赖于三方库,而那个依赖库需要使用某些配置文件。这个时候如果jfinal能传送配置到插件的话,就很方便了。

loadPropertyFile接口定义在JFinalConfig上面,应用程序可以很容易使用,但是这个要求应用load配置了之后再调用插件的API去配置插件。这样一来,距离JFinal的零配置目标反而更远了。

    虽然 IPlugin.start()方法中没有提供参数,但可以通过在插件构造方法中传递参数达到目的,com.jfinal.plugin.c3p0.C3p0Plugin(Properties properties) 展示了这种用法,JFinal自带的一些插件都是利用构造方法重载来传递不同的初始化参数。

    而如果通过IPlugin.start()来提供参数,就会失去灵活性,因为参数的类型与个数都是不确定的,例如有时候参数可能为Properties,而有时可能为int abc, String def, Date xyz。

0
开源老码农
开源老码农
该评论暂时无法显示,详情咨询 QQ 群:点此入群
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部