# viper操作文档

# 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,其灵活的配置选项可以更好地实现容器化部署。并且可以很好适应多种应用场景,让应用程序摆脱配置的束缚。

viper4android io错误,viper操作文档相关推荐

  1. 赫拉(hera)分布式任务调度系统之操作文档

    文章目录 前言 操作文档 登录和注册 用户 用户组 总结 首页 机器组监控 系统管理 用户管理 用户组 用户 总结 监控管理 机器组管理&worker管理 任务管理 任务详情 任务依赖 上游任 ...

  2. 如何修改DynEd的学生记录服务器,DynEd教师管理端操作文档..docx

    DynEd教师管理端操作文档. DynEd教师管理端Records Manager操作文档DynEd教学理念语言是一种技能传统的英语教学太过注重读写,而疏于听说能力的发展.学生花费了大量的时间来背单词 ...

  3. mallplus多商户商城全流程 操作文档

    下载地址 https://gitee.com/catshen/zscat_sw 用户端 http://www.yjlive.cn:8082/#/ 商户端 http://www.yjlive.cn:80 ...

  4. 狮子鱼社区团购支付时出现appid和mch-id不匹配的解决方法及狮子鱼官方操作文档

    解决方法:这点需要到微信小程序后台设置:微信支付–关联更多商户号:如下图所示: 此处绑定商户号需要先将该小程序认证,认证有两种方法,一种是直接给该小程序交300元给微信官方:如果已经有公众号已经认证过 ...

  5. ElasticSearch入门简介、安装ES(安装Kibana和IK分词器)使用 Postman连接ES进行测、ESRestAPI(操作索引CRUD操作文档CRUD)、练习

    要理解倒排索引 要能够使用DSL命令操作索引库 要能够使用DSL命令操作文档 要能够使用RestAPI操作索引库.文档 一.ES简介 理解倒排索引的概念和作用 理解es和MySql的区别和使用场景 1 ...

  6. viper4android io错误,Go之Viper

    简介 Viper是适用于Go应用程序的完整配置解决方案.它被设计用于在应用程序中工作,并且可以处理所有类型的配置需求和格式; Viper是适用于Go应用程序(包括Twelve-Factor App)的 ...

  7. viper4android io错误,golang常用库之配置文件解析库-viper使用详解

    一.viper简介 viper 配置管理解析库,是由大神 Steve Francia 开发,他在google领导着 golang 的产品开发,他也是 gohugo.io 的创始人之一,命令行解析库 c ...

  8. viper4android io错误,Go viper包处理JSON笔记

    第一部分 前景提要 一.背景 用Go搭一个小项目, 按传统的套路把开发环境和生产环境配置信息写在配置文件config.json中, 初始化加载配置,解析出数据.看着是解析一个JSON的小事,过程中却发 ...

  9. aspose.words for java操作文档doc,设置一级二级三级标题以及段落表格等详情

    实现将aspose.words的相关组件jar包 以下是我自己编辑整理的工具类,欢迎交流 package com;import java.io.InputStream;import org.slf4j ...

最新文章

  1. 005_系统运维之SLA与SLO的关系
  2. 解决rsync 同步auth failed on module问题
  3. [递归]递归问题解题思路
  4. spring mvc ajax 400解决
  5. 任正非:华为的岗位没有年龄限制;腾讯微博将于9月28日停止运营;微软关闭Visual Studio Online|极客头条
  6. 一位70后的感叹:下半辈子我会陷入贫困吗?
  7. python 如何封装dll_python怎么封装dll
  8. SpingMVC简易学习笔记二(springMVC的请求和响应)
  9. Linux下一种高效多定时器实现,Linux下一种高效多定时器实现
  10. 实对称矩阵的特征值求法_对称矩阵、对角矩阵与三角矩阵
  11. js锅打灰太狼(小游戏)
  12. Vscode连接远程服务器出现‘Acquiring lock on/home/~’问题
  13. th:if th:else
  14. 3、★☛基于STM32的手机通过wifi控LED灯√♠★
  15. 国内物联网产业仍处初级阶段 运营商NB-IoT大有可为
  16. 超全智能 电子设备cc0高清摄影图片素材网站整理
  17. 推荐几款不错的 Mac 文字处理器
  18. 南加大的计算机科学与工程,2019上海软科世界一流学科排名计算机科学与工程专业排名南加州大学排名第15...
  19. 直播预告 | 12位一作华人学者开启 ICLR 2022
  20. 想进世界顶尖投行 那我该上什么样的学校?

热门文章

  1. 正三角形c语言编程,三角形 (C语言代码)
  2. alpha 测试(α测试)与beta测试(β测试)的区别?
  3. 算法的时间复杂度(大O表示法)
  4. MySQL高级篇——日志
  5. 基于Android平台的虚拟试衣关键技术研究
  6. 软件开发—钱多多—典型用户分析
  7. Cocoapods打包SDK
  8. 政考网:公务员备考需要多久?
  9. POJ1830开关问题
  10. 如何安装内存条(图文教程)