PhalGo-Viper获取配置
2016-06-29 14:14
357 查看
PhalGo-Viper获取配置
![](http://i.imgur.com/8ahAJXa.png)
viper项目地址:https://github.com/spf13/viper
什么是viper
viper是国外大神spf13编写的开源配置解决方案,viper拥有一下功能以及特性如下:设置默认值
从JSON,toml YAML,HCl,和java属性配置文件
从环境变量env读取值
读缓冲区
远程读取配置文件
key不区分大小写
为什么用viper
viper不用担心你的文件格式,可以获取环境变量,也可以从远端获取配置文件,并且还有缓冲机制,功能非常棒非常牛逼,能满足不同的对配置文件的使用的要求,所以PhalGo采用viper来解决配置问题初始化Config
PhalGo追求最简单的使用各个组件所以viper我们只需要初始化就可以开始使用,我们只需要调用NewConfig函数需要你传入两个参数,一个是你文件相对于项目目录的相对路径,比如我在项目目录下建立的/conf文件目录就需要填写conf,第二个就是配置文件文件名,只需要名称即可,可以不用输入后缀viper会自动识别.//初始化配置文件 phalgo.NewConfig("conf", "sys")
比如我们创建了一个sys.toml文件内容如下:
强烈推荐使用toml格式,toml格式介绍:http://mlworks.cn/posts/introduction-to-toml/
[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项目地址进行了解相关文章推荐
- Patrol 7 架构下?的处理方法
- 中病毒后常用的解决方法病毒终极解决方案
- QQ尾巴 InfoMs.Ime 解决方案
- IE对CSS样式表的限制分析与解决方案
- 开源MySQL高效数据仓库解决方案:Infobright详细介绍
- 惊现支撑1亿pv/天的超级数据库解决方案
- 关于bluehost空间上wordpress后台变为英文的解决方案
- select * from sp_who的解决方案
- 简析Oracle数据库常见问题及解决方案
- php+mysql大量用户登录解决方案分析
- 常见PHP数据库解决方案分析介绍
- asp.net操作过程中常见错误的解决方法
- JSP页面显示中文乱码的解决方案
- NFrame——敏捷服务器开发解决方案简介
- Window phone用手机来控制电脑的多媒体播放
- Linux中文文件显示乱码或Secure CRT显示乱码解决方案
- VERITAS的全线产品解决方案介绍
- Vmware安装报msi错误解决方案(官方翻译中文版)
- 鸿博信通云交换机(云PBX)
- java读取excel之poi