PhalGo-Viper獲取配置

2018-01-04 09:27 更新

PhalGo-Viper獲取配置

viper項目地址:https://github.com/spf13/viper

什么是viper

viper是國外大神spf13編寫的開源配置解決方案,viper擁有一下功能以及特性如下:

  • 設(shè)置默認值
  • 從JSON,toml YAML,HCl,和java屬性配置文件
  • 從環(huán)境變量env讀取值
  • 讀緩沖區(qū)
  • 遠程讀取配置文件
  • key不區(qū)分大小寫

為什么用viper

viper不用擔(dān)心你的文件格式,可以獲取環(huán)境變量,也可以從遠端獲取配置文件,并且還有緩沖機制,功能非常棒非常牛逼,能滿足不同的對配置文件的使用的要求,所以PhalGo采用viper來解決配置問題

初始化Config

PhalGo追求最簡單的使用各個組件所以viper我們只需要初始化就可以開始使用,我們只需要調(diào)用NewConfig函數(shù)需要你傳入兩個參數(shù),一個是你文件相對于項目目錄的相對路徑,比如我在項目目錄下建立的/conf文件目錄就需要填寫conf,第二個就是配置文件文件名,只需要名稱即可,可以不用輸入后綴viper會自動識別.

//初始化配置文件
phalgo.NewConfig("conf", "sys")

比如我們創(chuàng)建了一個sys.toml文件內(nèi)容如下:

強烈推薦使用toml格式,toml格式介紹:http://mlworks.cn/posts/introduction-to-toml/

[system]
port = ":1234"

[dbDefault]
dbHost = "localhost"           #數(shù)據(jù)庫連接地址
dbName = "phalgo"              #數(shù)據(jù)庫名稱
dbUser = "root"                #數(shù)據(jù)庫用戶名
dbPasswd = ""                  #數(shù)據(jù)庫密碼
dbPort = "3306"                #數(shù)據(jù)庫端口號
dbOpenconns_max = 20           #最大連接數(shù)
dbIdleconns_max = 0            #最大空閑連接
dbType = "mysql"               #數(shù)據(jù)庫類型

我們就可以簡單的使用

phalgo.Config.GetString("system.port")  #返回一個string類型的":1234"

phalgo.Config和"github.com/spf13/viper"是等價的,所以可以通過phalgo.Config來調(diào)用viper提供的方法

Config詳解

設(shè)置默認值

phalgo.Config.SetDefault("ContentDir", "content")
phalgo.Config.SetDefault("LayoutDir", "layouts")
phalgo.Config.SetDefault("Taxonomies", map[string]string{"tag": "tags", "category": "categories"})

獲取不同類型配置

  • phalgo.Config.Get(key string) : interface{}
  • phalgo.Config.GetBool(key string) : bool
  • phalgo.Config.GetFloat64(key string) : float64
  • phalgo.Config.GetInt(key string) : int
  • phalgo.Config.GetString(key string) : string
  • phalgo.Config.GetStringMap(key string) : map[string]interface{}
  • phalgo.Config.GetStringMapString(key string) : map[string]string
  • phalgo.Config.GetStringSlice(key string) : []string
  • phalgo.Config.GetTime(key string) : time.Time
  • phalgo.Config.GetDuration(key string) : time.Duration
  • phalgo.Config.IsSet(key string) : bool

獲取多級參數(shù)

viper支持獲取配置的層級關(guān)系,在每個key之間通過"."分割機制,比如上面演示的

phalgo.Config.GetString("system.port")

就是獲取的二級參數(shù)

更多

viper提供很多有意思的功能,可以通過開篇viper項目地址進行了解

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號