PropKit 读取配置详细说明

目录

  1. 简介

  2. 读取配置文件

    2.1.配置文件路径

    2.2.读取方式

    2.3.获取配置项的值

  3. 高级读取方法

  4. 实际应用

1.简介

PropKit工具类用来读取外部键值对配置文件,PropKit可以极度方便地在系统任意时空使用,配置文件的格式如下。读取的文件支持txt文本文件、propties配置文件,一般使用txt文件即可,JFinal官网社区就是用的txt文件。

devMode=true
userName=zyg
fileName=propkit.txt

2.读取配置文件

2.1.配置文件路径

可以是工程内的文件,也可以是任意可读路径的文件。

工程内的配置文件推进放在resources目录下,其他路径读取时需要注意路径位置。

2.2.读取方式

直接使用文件名读取(个人推荐方式)

//在类路径的根目录下时直接读取文件名即可
PropKit.use("propkit.txt");
PropKit.use("propkit.txt", "UTF-8");
//在类路径的子目录下时添加上类路径即可
PropKit.use("propkit/propkit.txt");
PropKit.use("propkit/propkit.txt", "UTF-8");

读取File文件对象,当配置文件在服务器的某个具体路径时可以使用这个方式。

Prop prop = PropKit.use(new File("G:\\临时文件\\undertow-pro.txt"));
Prop prop = PropKit.use(new File("G:\\临时文件\\undertow-pro.txt"), "UTF-8");

2.3.获取配置项的值

支持直接获取String、int、long、boolean等类型的值。

PropKit.getBoolean("dev");
PropKit.getInt("count");

3.高级读取方法

使用第一个发现的配置文件:可以通过这种方式设定不同文件的优先级,区分开发环境、生产环境使用不同的配置文件。

//开发配置文件、生产配置文件可以灵活使用
PropKit.useFirstFound("propkit.txt", "propkit.propties");

追加配置文件:有如下两种方式:

//直接追加,不存在时会报错
PropKit.append("propkit.txt");
//安全追加,当文件不存在时不追加,不会报错,推荐使用
//这种方式也可以区分开发配置和生产配置,在生产环境部署一个生产配置文件覆盖开发配置文件
PropKit.appendIfExists("propkit2.txt");

追加配置文件:当两个配置文件中有相同key时以后一个为准。

首次加载和非首次加载:两者唯一区别在于获取参数值的方式:首次加载的配置文件中的值可以直接通过PropKit.get方法获取参数值,因为首次加载的配置文件会成为主配置;而非首次加载的获取配置值时需要先使用use方法再使用get方法,或者先获取一个Prop对象。

//首次加载的配置文件
PropKit.use("propkit.txt");
PropKit.get("fileName")
//非首次加载的配置文件
PropKit.use("propkit.propties");
PropKit.use("propkit.propties").get("fileName");
Prop p = PropKit.use("propkit.propties");
p.get("fileName");

4.实际应用

在config类中实际使用一下,下面是一个简单地例子,详细介绍及演示请移步至JFinal从入门到实战视频教程【60集】

//工程包里有两个配置文件,开发配置在前,后续部署到生产的时候去掉开发配置文件即可
PropKit.useFirstFound("learningConfig-dev.txt", "learningConfig.txt");
me.setDevMode(PropKit.get("devMode",true));


评论区

JFinal

2020-08-14 20:59

推荐使用 useFirstFound 而非 append 与 appendIfExists ,因为前者更要求配置文件的全面性,与实际应用场景比较切合

jfinal 4.9.01 版本新增了对于 get 方法的 trim() 操作,这样就可以避免 value 值的后面会不小心多一个空白字符,减少麻烦

此外,配置的时候,等号前后两侧可以留一个空格,即便是老版本 value 值也并不会多出一个空格,新版本添加 trim() 以后就更不会多出空格了

永字诀

2020-08-18 23:04

@JFinal 手动点赞

热门分享

扫码入社