摘要:什么是是一個(gè)開源項(xiàng)目,旨在解決配置文件的解析問題。我提交了一個(gè)解決了這個(gè)問題,已經(jīng)到,針對這種情況就可以這樣寫了定義配置文件的路徑
什么是OWNER
OWNER 是一個(gè)開源項(xiàng)目,旨在解決Java配置文件的解析問題。
例如配置文件 /data/config.properties 包含下列內(nèi)容:
server.port=80 server.hostname=foobar.com server.max.threads=100
為了解析這個(gè)配置文件,我們首先定義一個(gè)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());配置文件路徑的繼承
在實(shí)際應(yīng)用中,配置文件內(nèi)容上一般會(huì)包括多個(gè)分組,每一個(gè)分組定義成一個(gè)接口會(huì)更加清晰,同時(shí)所有的接口需要從相同的配置文件列表中加載。例如除了上面例子中展示的server配置以外,還要定義mysql的信息,就需要添加一個(gè)接口并重新定義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這個(gè)annonation不支持繼承,所以每次新添加一組配置項(xiàng)的時(shí)候就需要重寫一遍Sources,這樣一來容易出錯(cuò)并且以后修改配置文件路徑的時(shí)候多有不便。我提交了一個(gè)patch解決了這個(gè)問題,已經(jīng)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(); }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/69865.html
摘要:行為所要響應(yīng)的事件重載方法,表示這個(gè)行為將對類何種事件進(jìn)行何種反饋。行為用的最多的,也是對于各種事件的響應(yīng)。當(dāng)出現(xiàn)命名沖突時(shí),行為會(huì)自行排除沖突,自動(dòng)使用先綁定的行為。目前還沒有能支持行為。 Yii基礎(chǔ) 行為(Behavior) 行為(behavior)可以在不修改現(xiàn)有類的情況下,對類的功能進(jìn)行擴(kuò)充。 通過將行為綁定到一個(gè)類,可以使類具有行為本身所定義的屬性和方法,就好像類本來就有這些...
摘要:修正了在上的部分修正了比如協(xié)議中序列化的問題。配置文件在配置配置在目錄下面配置后的工程基本目錄結(jié)構(gòu)在項(xiàng)目 雜七雜八的雜 個(gè)人博客: 呆萌的程序猿原文:dubbox/dubbo+spring+mybatis+gradle構(gòu)建REST服務(wù)聲明:由于sf的編輯自動(dòng)校驗(yàn),導(dǎo)致某些英文單詞出錯(cuò),例如:gradle被編輯器自動(dòng)替換為grade,jdk替換為idk等,查看的時(shí)候,請自行翻譯。 ---...
閱讀 515·2021-10-09 09:44
閱讀 2084·2021-09-02 15:41
閱讀 3555·2019-08-30 15:53
閱讀 1833·2019-08-30 15:44
閱讀 1290·2019-08-30 13:10
閱讀 1196·2019-08-30 11:25
閱讀 1461·2019-08-30 10:51
閱讀 3367·2019-08-30 10:49