博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OWNER支持配置文件目录的继承
阅读量:6295 次
发布时间:2019-06-22

本文共 1827 字,大约阅读时间需要 6 分钟。

什么是OWNER

是一个开源项目,旨在解决Java配置文件的解析问题。

例如配置文件 /data/config.properties 包含下列内容:

server.port=80server.hostname=foobar.comserver.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();}

转载地址:http://utvta.baihongyu.com/

你可能感兴趣的文章
以太坊ERC20代币合约优化版
查看>>
Why I Began
查看>>
同一台电脑上Windows 7和Ubuntu 14.04的CPU温度和GPU温度对比
查看>>
js数组的操作
查看>>
springmvc Could not write content: No serializer
查看>>
Python系语言发展综述
查看>>
新手 开博
查看>>
借助开源工具高效完成Java应用的运行分析
查看>>
163 yum
查看>>
第三章:Shiro的配置——深入浅出学Shiro细粒度权限开发框架
查看>>
80后创业的经验谈(转,朴实但实用!推荐)
查看>>
让Windows图片查看器和windows资源管理器显示WebP格式
查看>>
我的友情链接
查看>>
vim使用点滴
查看>>
embedded linux学习中几个需要明确的概念
查看>>
mysql常用语法
查看>>
Morris ajax
查看>>
【Docker学习笔记(四)】通过Nginx镜像快速搭建静态网站
查看>>
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
查看>>
<转>云主机配置OpenStack使用spice的方法
查看>>