一:简要介绍Viper
Viper主要是用于处理各种格式的配置文件,简化程序配置的读取问题。
Viper 支持:(后续会详细介绍)
设置默认值从JSON,TOML,YAML,HCL
和Java
属性配置文件中读取实时观看和重新读取配置文件(可选)从环境变量中读取从远程配置系统(etcd
或Consul
)读取,并观察变化从命令行标志读取(flag)从缓冲区读取设置显式值
二:Viper安装
go get github.com/spf13/viper
三:设置默认值
一个好的配置系统应该支持默认值。键不需要默认值,但如果没有通过配置文件、环境变量、远程配置或命令行标志(flag)设置键,则默认值非常有用。
例如:
四:从yaml、json中获取配置文件
yaml配置文件:
json配置文件:
获取yaf配置文件的代码:
获取json的配置文件的代码:
上述代码中涉及到了Viper取值的函数,还有如下方法:
Get(key string) : interface{}
GetBool(key string) : bool
GetFloat64(key string) : float64
GetInt(key string) : int
GetIntSlice(key string) : []int
GetString(key string) : string
GetStringMap(key string) : map[string]interface{}
GetStringMapString(key string) : map[string]string
GetStringSlice(key string) : []string
GetTime(key string) : time.Time
GetDuration(key string) : time.Duration
IsSet(key string) : bool
五:
写入配置文件
将配置写入配置文件常用到以下四个函数
六:监控并重新读取配置文件
七:从环境变量中读取
普通情况我们可以用os包带的方法来获取环境变量,如:
Viper也完全支持环境变量,主要有3种方法帮我们使用环境变量:
1.AutomaticEnv()方法可以预先加载所有的环境变量
2.SetEnvPrefix(string)为环境变量配置前缀
3.BindEnv(string...)需要一个到两个参数,第一个参数是键名,第二个参数是环境变量名称
八:可以从远程配置系统(etcd
或Consul
)读取配置或者通过io.Reader获取自己配置的配置
Viper预先定义了许多配置源,如文件、环境变量、标志和远程K/V存储,但你不受其约束。你还可以实现自己所需的配置源并将其提供给viper。可通过io.Reader获取自己的配置,代码不粘,网上很多,获取远程配置代码如下:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)