PhalGo-Viper獲取配置

#PhalGo-Viper獲取配置java

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

##什麼是vipergit

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

  • 設置默認值
  • 從JSON,toml YAML,HCl,和java屬性配置文件
  • 從環境變量env讀取值
  • 讀緩衝區
  • 遠程讀取配置文件
  • key不區分大小寫

##爲何用vipersql

viper不用擔憂你的文件格式,能夠獲取環境變量,也能夠從遠端獲取配置文件,而且還有緩衝機制,功能很是棒很是牛逼,能知足不一樣的對配置文件的使用的要求,因此PhalGo採用viper來解決配置問題數據庫

##初始化Config函數

PhalGo追求最簡單的使用各個組件因此viper咱們只須要初始化就能夠開始使用,咱們只須要調用NewConfig函數須要你傳入兩個參數,一個是你文件相對於項目目錄的相對路徑,好比我在項目目錄下創建的/conf文件目錄就須要填寫conf,第二個就是配置文件文件名,只須要名稱便可,能夠不用輸入後綴viper會自動識別.post

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

好比咱們建立了一個sys.toml文件內容以下:code

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

[system]
port = ":1234"

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

咱們就能夠簡單的使用

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

phalgo.Config和**"github.com/spf13/viper"**是等價的,因此能夠經過phalgo.Config來調用viper提供的方法

##Config詳解

###設置默認值

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

###獲取多級參數

viper支持獲取配置的層級關係,在每一個key之間經過"."分割機制,好比上面演示的

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

就是獲取的二級參數

##更多

viper提供不少有意思的功能,能夠經過開篇viper項目地址進行了解

相關文章
相關標籤/搜索