示例二:解析Properties配置

2018-12-24 22:05 更新
  • 基于Properties文件的基礎(chǔ)配置格式如下, 同樣請(qǐng)將該文件命名為configuration.properties并放置在config_home路徑下的cfgs目錄里:

    #--------------------------------------------------------------------------
    # 配置文件內(nèi)容格式: properties.<categoryName>.<propertyName>=[propertyValue]
    #
    # 注意: attributes將作為關(guān)鍵字使用, 用于表示分類, 屬性, 集合和MAP的子屬性集合
    #--------------------------------------------------------------------------
    
    # 舉例1: 默認(rèn)分類下表示公司名稱, 默認(rèn)分類名稱為default
    properties.default.company_name=Apple Inc.
    
    #--------------------------------------------------------------------------
    # 數(shù)組和集合數(shù)據(jù)類型的表示方法: 多個(gè)值之間用'|'分隔, 如: Value1|Value2|...|ValueN
    #--------------------------------------------------------------------------
    properties.default.products=iphone|ipad|imac|itouch
    
    #--------------------------------------------------------------------------
    # MAP<K, V>數(shù)據(jù)類型的表示方法:
    # 如:產(chǎn)品規(guī)格(product_spec)的K分別是color|weight|size|age, 對(duì)應(yīng)的V分別是熱red|120g|small|2015
    #--------------------------------------------------------------------------
    properties.default.product_spec.color=red
    properties.default.product_spec.weight=120g
    properties.default.product_spec.size=small
    properties.default.product_spec.age=2015
    
    # 每個(gè)MAP都有屬于其自身的屬性列表(深度僅為一級(jí)), 用attributes表示, abc代表屬性key, xyz代表屬性值
    # 注: MAP數(shù)據(jù)類型的attributes和MAP本身的表示方法達(dá)到的效果是一樣的
    properties.default.product_spec.attributes.abc=xyz
    
  • 修改配置類DemoConfig如下, 通過@ConfigurationProvider注解指定配置文件內(nèi)容解析器:

    @Configuration("cfgs/configuration.properties")
    @ConfigurationProvider(PropertyConfigurationProvider.class)
    public class DemoConfig extends DefaultConfiguration {
    }
    
  • 測(cè)試代碼, 完成模塊初始化并加載配置文件內(nèi)容:

    public static void main(String[] args) throws Exception {
        YMP.get().init();
        try {
            DemoConfig _cfg = new DemoConfig();
            if (Cfgs.get().fillCfg(_cfg)) {
                System.out.println(_cfg.getString("company_name"));
                System.out.println(_cfg.getMap("product_spec"));
                System.out.println(_cfg.getList("products"));
            }
        } finally {
            YMP.get().destroy();
        }
    }
  • 重新執(zhí)行示例代碼, 執(zhí)行結(jié)果與示例一結(jié)果相同:

    Apple Inc.
    {abc=xzy, color=red, size=small, weight=120g, age=2015}
    [itouch, imac, ipad, iphone]
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)