国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

OWNER支持配置文件目錄的繼承

remcarpediem / 1902人閱讀

摘要:什么是是一個(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

相關(guān)文章

  • Yii源碼解讀-行為

    摘要:行為所要響應(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è)類,可以使類具有行為本身所定義的屬性和方法,就好像類本來就有這些...

    IntMain 評論0 收藏0
  • dubbox/dubbo+spring+mybatis+gradle構(gòu)建REST服務(wù)

    摘要:修正了在上的部分修正了比如協(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í)候,請自行翻譯。 ---...

    fireflow 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<