viper4android io错误,viper操作文档

# viper操作文档

67107ff045a5300bfa90537dc40365c6.png

# 1 Viper简单介绍

# 1.1 什么是Viper

Viper介绍

Viper是Go应用程序的完整配置解决方案,包括12-Factor应用程序。它旨在在应用程序中工作,并可以处理所有类型的配置需求和格式。Viper可以被认为是所有应用程序配置需求的注册表。它支持: 设置默认值

从JSON,TOML,YAML,HCL和Java属性配置文件中读取

实时观看和重新读取配置文件(可选)

从环境变量中读取

从远程配置系统(etcd或Consul)读取,并观察变化

从命令行标志读取

从缓冲区读取

设置显式值

# 1.2 为何选择Viper

为何选择Viper

构建现代应用程序时,您不必担心配置文件格式; 你想专注于构建真棒软件。Viper就是为此提供帮助的。Viper为您做了以下事情: 以JSON,TOML,YAML,HCL或Java属性格式查找,加载和解组配置文件。

提供一种机制来为不同的配置选项设置默认值。

提供一种机制来为通过命令行标志指定的选项设置覆盖值。

提供别名系统,轻松重命名参数,而不会破坏现有代码。

可以很容易地区分用户提供命令行或配置文件与默认值相同的时间。

# 1.3 配置方式的优先级顺序 viper提供的配置方式的优先级顺序如下(由高到低): 1.设置显示调用(explicit call to Set)

2.命令行标志(flag)

3.环境变量(env)

4.配置文件(config)

5.远程键/值存储(key/value store)

6.默认值(default)

# 2 安装及使用

# 2.1 安装依赖

# 2.2 设置默认值

# 2.3 读取配置文件 Viper需要最少的配置,因此它知道在哪里查找配置文件。Viper支持JSON,TOML,YAML,HCL和Java Properties文件。Viper可以搜索多个路径,但目前单个Viper实例仅支持单个配置文件。Viper不会默认使用任何配置搜索路径,而是将默认值决定应用于应用程序。

以下是如何使用Viper搜索和读取配置文件的示例,定义在config目录下新建一个appConfig.yaml文件,文件内容如下

# 2.4 监听并重新读取配置文件 Viper支持在运行时让应用程序实时读取配置文件。需要重新启动服务器以使配置生效的日子已经一去不复返了,viper驱动的应用程序可以在运行时读取配置文件的更新,而不会错过任何一个节拍。

只需告诉viper实例watchConfig即可。您可以选择为Viper提供每次发生更改时运行的功能。

# 确保在调用之前添加所有configPath WatchConfig()

# 2.5 从io.Reader读取配置 Viper预定义了许多配置源,例如文件,环境变量,标志和远程K/V存储,但您不受它们的约束。您还可以实现自己的必需配置源并将其提供给viper。

# 2.6 设置并覆盖配置值

# 2.7 注册和使用别名 别名允许多个键引用单个值

# 2.8 使用环境变量 Viper完全支持环境变量。有四种方法可以帮助使用环境变量:

# ENV实例

# 使用flag Viper能够绑定到flag。就像BindEnv,在调用绑定方法时,不会设置该值。这意味着您可以尽早绑定,甚至可以在init()函数中绑定.

对于单个标志,该BindPFlag()方法提供此功能。

# 绑定一组现有的pflags

# flag接口 如果您不使用,Viper提供两个Go接口来绑定其他标志系统Pflags FlagValue代表一个标志。这是一个关于如何实现此接口的非常简单的示例:

一旦你的flag实现了这个接口,你可以告诉Viper绑定它:

# 2.9 远程key/value存储 Viper可以从例如etcd、Consul的远程Key/Value存储系统的一个路径上,读取一个配置字符串(JSON, TOML, YAML 或 HCL 格式). 这些值优先于默认值,但会被从磁盘文件、命令行 flag、环境变量的配置所覆盖.要在Viper中启用远程支持,请对viper/remote 包进行空白导入:

# 远程key/value存储示例 - 未加密

# 远程key/value存储示例 - 加密

# 监听etcd中的变化 - 未加密

# 3 Viper获取值方法汇总 在Viper中,有几种方法可以根据值的类型获取值。如果找不到,每个Get函数都将返回零值。IsSet()方法检查给定密钥是否存在。

存在以下功能和方法:

# 4 访问嵌套数据

# 4.1 JSON嵌套 访问器方法也接受深层嵌套键的格式化路径。Viper可以通过传递.分隔的键路径来访问嵌套字段。

# 4.2 YAML嵌套示例一

yaml文件如下,使用4.1的Get方法获取数据

# 4.3 YAML多层嵌套示例二 yaml文件如下,结构体嵌套的方式接受,特别注意:读取多层嵌套 字段首字母必须大写

# 5 更多参考资料 目前涉及viper的使用大致就是这些了。在应用程序中使用到viper,其灵活的配置选项可以更好地实现容器化部署。并且可以很好适应多种应用场景,让应用程序摆脱配置的束缚。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值