摘要:什么是是一個開源項目,旨在解決配置文件的解析問題。我提交了一個解決了這個問題,已經到,針對這種情況就可以這樣寫了定義配置文件的路徑
什么是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(); }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/69865.html
摘要:行為所要響應的事件重載方法,表示這個行為將對類何種事件進行何種反饋。行為用的最多的,也是對于各種事件的響應。當出現命名沖突時,行為會自行排除沖突,自動使用先綁定的行為。目前還沒有能支持行為。 Yii基礎 行為(Behavior) 行為(behavior)可以在不修改現有類的情況下,對類的功能進行擴充。 通過將行為綁定到一個類,可以使類具有行為本身所定義的屬性和方法,就好像類本來就有這些...
摘要:修正了在上的部分修正了比如協議中序列化的問題。配置文件在配置配置在目錄下面配置后的工程基本目錄結構在項目 雜七雜八的雜 個人博客: 呆萌的程序猿原文:dubbox/dubbo+spring+mybatis+gradle構建REST服務聲明:由于sf的編輯自動校驗,導致某些英文單詞出錯,例如:gradle被編輯器自動替換為grade,jdk替換為idk等,查看的時候,請自行翻譯。 ---...
閱讀 518·2021-10-09 09:44
閱讀 2092·2021-09-02 15:41
閱讀 3555·2019-08-30 15:53
閱讀 1834·2019-08-30 15:44
閱讀 1291·2019-08-30 13:10
閱讀 1197·2019-08-30 11:25
閱讀 1468·2019-08-30 10:51
閱讀 3369·2019-08-30 10:49