摘要:什么是是一个开源项目,旨在解决配置文件的解析问题。我提交了一个解决了这个问题,已经到,针对这种情况就可以这样写了定义配置文件的路径
什么是OWNER
OWNER 是一个开源项目,旨在解决Java配置文件的解析问题。
例如配置文件 /data/config.properties 包含下列内容:
</>复制代码
server.port=80
server.hostname=foobar.com
server.max.threads=100
为了解析这个配置文件,我们首先定义一个Java接口:
</>复制代码
import org.aeonbits.owner.Config;
@Sources({ //定义配置文件的路径
"file:/data/config.properties",
"classpath: config.properties"
})
public interface ServerConfig extends Config {
@Key("server.port")
int port();
@Key("server.hostname")
String hostname();
@Key("server.max.threads");
@DefaultValue("42")
int maxThreads();
}
加载配置文件:
</>复制代码
ServerConfig cfg = ConfigFactory.create(ServerConfig.class);
System.out.println("Server " + cfg.hostname() + ":" + cfg.port() +
" will run " + cfg.maxThreads());
配置文件路径的继承
在实际应用中,配置文件内容上一般会包括多个分组,每一个分组定义成一个接口会更加清晰,同时所有的接口需要从相同的配置文件列表中加载。例如除了上面例子中展示的server配置以外,还要定义mysql的信息,就需要添加一个接口并重新定义Sources :
</>复制代码
import org.aeonbits.owner.Config;
@Sources({ //定义配置文件的路径
"file:/data/config.properties",
"classpath: config.properties"
})
public interface MysqlConfig extends Config {
@Key("mysql.port")
int port();
@Key("mysql.hostname")
String hostname();
}
由于Sources这个annonation不支持继承,所以每次新添加一组配置项的时候就需要重写一遍Sources,这样一来容易出错并且以后修改配置文件路径的时候多有不便。我提交了一个patch解决了这个问题,已经merge到master,针对这种情况就可以这样写了:
</>复制代码
import org.aeonbits.owner.Config;
@Sources({ //定义配置文件的路径
"file:/data/config.properties",
"classpath: config.properties"
})
public interface BaseConfig extends Config {
}
</>复制代码
import org.aeonbits.owner.Config;
public interface ServerConfig extends BaseConfig {
@Key("server.port")
int port();
@Key("server.hostname")
String hostname();
@Key("server.max.threads");
@DefaultValue("42")
int maxThreads();
}
</>复制代码
import org.aeonbits.owner.Config;
public interface MysqlConfig extends BaseConfig {
@Key("mysql.port")
int port();
@Key("mysql.hostname")
String hostname();
}
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/69865.html
摘要:行为所要响应的事件重载方法,表示这个行为将对类何种事件进行何种反馈。行为用的最多的,也是对于各种事件的响应。当出现命名冲突时,行为会自行排除冲突,自动使用先绑定的行为。目前还没有能支持行为。 Yii基础 行为(Behavior) 行为(behavior)可以在不修改现有类的情况下,对类的功能进行扩充。 通过将行为绑定到一个类,可以使类具有行为本身所定义的属性和方法,就好像类本来就有这些...
摘要:修正了在上的部分修正了比如协议中序列化的问题。配置文件在配置配置在目录下面配置后的工程基本目录结构在项目 杂七杂八的杂 个人博客: 呆萌的程序猿原文:dubbox/dubbo+spring+mybatis+gradle构建REST服务声明:由于sf的编辑自动校验,导致某些英文单词出错,例如:gradle被编辑器自动替换为grade,jdk替换为idk等,查看的时候,请自行翻译。 ---...
阅读 578·2021-10-09 09:44
阅读 2368·2021-09-02 15:41
阅读 3634·2019-08-30 15:53
阅读 1900·2019-08-30 15:44
阅读 1358·2019-08-30 13:10
阅读 1303·2019-08-30 11:25
阅读 1556·2019-08-30 10:51
阅读 3439·2019-08-30 10:49