hocon配置文件_GitHub - Himmelt/Hocon: Simple Hocon Configuration Library [轻量 Hocon 配置库]...
Hocon
Simple Hocon Configuration Library
轻量 Hocon 配置库
简介
这是一个轻量级的 Hocon 配置库,没有其他依赖项。
注意,这是一个使用 Hocon 格式的配置库,而不是完整的 Hocon 解析库。
该配置库除了使用结点 -- Node 手动获取配置外,还可以使用 @Setting 注解字段,以自动获取配置。
使用 NodeMap 的 void modify(Object target); 方法,可以用结点的值修改目标对象对应名称用 @Setting 注解的字段。
使用 NodeMap 的 void extract(Object source); 方法,可以提取源对象对应名称用 @Setting 注解的字段的值到结点。
另外该库支持对注释内容的翻译,可通过设置翻译器实现本地化效果。
具体使用方法可以查看 Javadoc
使用依赖
Maven
org.soraworld
hocon
1.2.3-SNAPSHOT
pom
Gradle
compile 'org.soraworld:hocon:1.2.3-SNAPSHOT'
仓库
repositories {
jcenter()
maven {
url = 'https://oss.jfrog.org/artifactory/oss-release-local/' //''https://oss.jfrog.org/artifactory/libs-release/'
}
maven {
url = 'https://oss.jfrog.org/artifactory/oss-snapshot-local/' //'https://oss.jfrog.org/artifactory/libs-snapshot/'
}
}
专用HOCON格式
根结点
根结点即文件所对应的结点, 根结点必定是一个 NodeMap 结点.
根结点下存储 keyvalue 键值对, 其中 value 值可以是
基础结点(NodeBase), 列表结点(NodeList), 映射结点(NodeMap)
基础结点(值实质是字符串)
键 和 值 之间用 = 连接, 如果字符串含有空格或其他特殊字符,
则需要在字符串两端加双引号 "
详细特殊字符的正则表达为 `.*[":=,+?`!@#$^&*{}\[\]\\].*
# 井号开头的行全部认为是注释
key1 = abc
key2 = "字符串值2"
key3 = 123.456
key4 = false
# 值的内容代表 空 null
keyNull = null
# 值的内容代表字符串 "null"
stringNull = "null"
列表结点
键 和 值 之间用 = 连接, 如果列表为空, 直接接 关闭的方括号 [],
如过列表不为空, 接 左方括号 [ , 新行填列表元素, 每个元素都新起一行.
元素结束, 新行 接 右方括号 ].
缩进只是为了美观, 元素可以不用缩进, 顶行写也是可以的.
# 字符串列表
stringlist = [
"字符串列表元素1"
字符串列表元素2
"string elemnet 3"
HelloWorld
]
# 整数列表
intlist = [
1
3
5
7
]
# 空列表
emptylist = []
# (整数)列表列表
listlist = [
[
1
2
4
]
[
6
8
9
]
]
# 映射列表(其存储的元素是 映射)
maplist = [
# 第一个映射
{
key1 = abc
key2 = 123
}
# 第二个映射
#缩进只是为了美观, 元素可以不用缩进, 顶行写也是可以的.
{
key1 = false
hello = "Hello World"
}
]
映射结点
键 和 值 之间没有内容, 如果映射为空, 直接接 关闭的花括号 {},
键 只能为字符串, 如果键含有特殊字符 则要加双引号 ",
如过映射不为空, 接 左花括号 { , 新行填 映射键值对, 每个键值对都新起一行.
元素结束, 新行 接 右花括号 }.
缩进只是为了美观, 元素可以不用缩进, 顶行写也是可以的.
# 整数映射
int_map {
key1 = 233
ke2 = 456
xxx = 5749850394
}
# 空映射
# 键名可以为中文(常规使用时不建议)
空映射 {}
# 特殊字符的键要加 引号 ""
"!himmelt&shiki" {
# 这样也是空映射
}
# 嵌套映射, 和 yaml/json 等 的层级关系一样
父结点 {
键1 = 值1
子基础结点 = 值2
空列表1 = []
列表2 = [
1
3
4
]
子列表结点 = [
{
键1 = 值1
键2 = 值2
空列表1 = []
}
{
键11 = 值11
键22 = 值22
空列表11 = []
}
]
子映射结点 {
孙子键1 = "孙子值1"
孙子映射结点 {
重孙子键 = 1234567
}
}
}
示例
public class Test{
@Setting(comment = "comment.lang")
protected String lang = "zh_cn";
@Setting(comment = "comment.debug")
protected boolean debug = false;
protected final Path confile;
protected final Options options = Options.build();
public Manager(Path path) {
this.path = path;
this.options.setTranslator(this::trans);
this.options.registerType(new LocationSerializer());
this.confile = path.resolve(plugin.getId().replace(' ', '_') + ".conf");
}
public boolean load() {
try {
FileNode rootNode = new FileNode(confile.toFile(), options);
rootNode.load(true);
rootNode.modify(this);
options.setDebug(debug);
return true;
} catch (Throwable e) {
return false;
}
}
}
hocon配置文件_GitHub - Himmelt/Hocon: Simple Hocon Configuration Library [轻量 Hocon 配置库]...相关推荐
- android log4,GitHub - oronno/log4android: Log4Android - Simple Logging Wrapper Library for Android
log4android Log4Android - Simple Logging Wrapper Library for Android Tired writing TAG each time wri ...
- java me xizai_GitHub - seven332/XiaZai: A simple Android download library
XiaZai 这是一个 Android 平台上基于 OkHttp 的简单下载库. It's a simple Android download library based on OkHttp. Usa ...
- hocon配置文件_Scala - 使用 typesafe.config 管理你的配置文件
Scala - 使用 typesafe.config 管理你的配置文件 14 July 2016 为了统一管理配置项,我在真是操碎了心啊.现在我分享下这两天的研究成果. 首先先介绍下 typesafe ...
- python configuration is still_通过Python配置关闭Release优化
通过自己之前转载的一篇文章,<VS设置增量编译>,在此基础上增加了Release版本如何关闭优化并自动生成pdb文件,最终实现思路也比较简单,就用Python自带的ElementTree库 ...
- java配置文件中的plugin,启用ContextReplacementPlugin以忽略webpack中的配置和测试设置文件...
我正在开发一个项目,其中我的文件夹结构如下 lib apps src / index.js(webpack的入口文件)jestEnvSetup.js webpack.config.js package ...
- SDS(Simple Dynamic String)一个简易动态字符串库
SDS(Simple Dynamic Strings)是一个C语言字符串库,设计中增加了从堆上分配内存的字符串,来扩充有限的libc字符处理的功能,使得: 使用更简便 二进制安全 计算更有效率 而且仍 ...
- mysql mha配置文件详解_十四、MySQL MHA 高可用配置(一)
MHA 高可用 1.准备三台机器 IP:10.0.0.51 主机名:db01 内存:2G IP:10.0.0.52 主机名:db02 内存:2G IP:10.0.0.53 主机名:db03 内存:2G ...
- mybatis配置文件不在resources目录下时需进行的额外配置方法
- python 元组捷豹_GitHub - jaguarzls/pyecharts: Python Echarts Plotting Library
pyecharts Python ❤️ Echarts = pyecharts
最新文章
- vivo 2019:关于企业文化如何影响手机企业发展的三个追问
- Shell(8)——for、while、until
- WPF对某控件添加右键属性
- oracle中如何创建dblink
- 小学数学N合一(洛谷P2433题题解,Java语言描述)
- (王道408考研数据结构)第五章树-第三节2:二叉树构造和重建
- aop springboot 传入参数_springboot用aop做参数校验
- c/c++中的引用变量
- Linux+ps进程解释,linux ps查看进程命令详解
- 微信小程序图片全屏显示
- appscan 9.0.3.12 版本下载
- 基于JAVA便利店库存管理计算机毕业设计源码+系统+lw文档+部署
- 规范JavaScript注释
- 计划策略(planning strategy)
- 静态库和动态库运行时间的区别
- java中立方根方法,Java Math.cbrt() 方法
- 计算机课学生评价用语,主题班会课对学生的评价用语
- Codeforces Gym 101173 K. Key Knocking (构造)
- Maven分模块管理时com.xx.xx.service等找不到
- 神通数据库connect by用法
热门文章
- wap站点优于传统站点的异同分析
- 软件需求说明书文档格式
- php ppt转换成图片格式,帮忙看下,这个程序实现使用office的COM组件将ppt转换为图片...
- PHP7不能用string类名,thinkphp在php7环境下提示Cannot use ‘String’ as class name as it is reserved的解决方法...
- 用神经网络分类一维矩阵
- 神经网络的耦合作用与规范场
- sql server 多条记录数据合并为一条_如何利用Python实现SQL自动化?
- 【Leetcode | easy】罗马数字转整数
- LaTex 各种特殊符号
- 记录一次血崩式的CPLD不稳定 bug经验