亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

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

remcarpediem / 1955人閱讀

摘要:什么是是一個(gè)開(kāi)源項(xiàng)目,旨在解決配置文件的解析問(wèn)題。我提交了一個(gè)解決了這個(gè)問(wèn)題,已經(jīng)到,針對(duì)這種情況就可以這樣寫(xiě)了定義配置文件的路徑

什么是OWNER

OWNER 是一個(gè)開(kāi)源項(xiàng)目,旨在解決Java配置文件的解析問(wèn)題。

例如配置文件 /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í)候就需要重寫(xiě)一遍Sources,這樣一來(lái)容易出錯(cuò)并且以后修改配置文件路徑的時(shí)候多有不便。我提交了一個(gè)patch解決了這個(gè)問(wèn)題,已經(jīng)merge到master,針對(duì)這種情況就可以這樣寫(xiě)了:

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)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/69865.html

相關(guān)文章

  • Yii源碼解讀-行為

    摘要:行為所要響應(yīng)的事件重載方法,表示這個(gè)行為將對(duì)類何種事件進(jìn)行何種反饋。行為用的最多的,也是對(duì)于各種事件的響應(yīng)。當(dāng)出現(xiàn)命名沖突時(shí),行為會(huì)自行排除沖突,自動(dòng)使用先綁定的行為。目前還沒(méi)有能支持行為。 Yii基礎(chǔ) 行為(Behavior) 行為(behavior)可以在不修改現(xiàn)有類的情況下,對(duì)類的功能進(jìn)行擴(kuò)充。 通過(guò)將行為綁定到一個(gè)類,可以使類具有行為本身所定義的屬性和方法,就好像類本來(lái)就有這些...

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

    摘要:修正了在上的部分修正了比如協(xié)議中序列化的問(wèn)題。配置文件在配置配置在目錄下面配置后的工程基本目錄結(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í)候,請(qǐng)自行翻譯。 ---...

    fireflow 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

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