# 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. JAVA用递归方法判断某个字串是否是回文
  2. android 编译 oserror,Android-4.4.2 编译出错 OSError: [Errno 2] No such file or directory
  3. 多线程和MsgWaitForMultipleObjects
  4. 《计算机科学与工程导论:基于IoT和机器人的可视化编程实践方法第2版》一1.2.2 团队组建...
  5. 学习过程中的一些细节
  6. Java应用一般架构
  7. 敏捷开发般若敏捷系列之四:如何推广敏捷(上)(无我,无人,无众生)
  8. Android绘制基础及手写绘制实例
  9. 毕业设计(十七)---发表文章(3)之- 使用ckeditor上传图片(flash)
  10. 3.8 Spark 用户日志分析
  11. php中的冒泡排序和选择排序d
  12. 汉字录入到计算机的过程,如何快速把书中文字录入到电脑中
  13. idea中自动生成Java类图和时序图
  14. 大航海时代2 全村落 探索 MD ROM 静态 HACKER
  15. 好的医疗器械管理软件应该具备哪些功能?
  16. 计算机连接了无线网络显示有限的访问权限,win7连接无线网络提示有限的访问权限怎么办...
  17. hive根据出生日期算年龄-粗略版
  18. 深度学习中数据的拆分打乱
  19. 台式电脑F1F2变成音量键怎么办
  20. Docker删除Exited镜像

热门文章

  1. OpenCV极坐标转换函数warpPolar的使用
  2. CF 472D Riverside Curio
  3. WR | 西湖大学鞠峰组揭示微塑料污染对人工湿地菌群与脱氮功能的影响
  4. 安装ecshop的方法·
  5. Boll布林带波动率策略
  6. ESP8266 RTOSSDK3.0 的工程同步到3.4
  7. 开发者出海跨境收款——如何完美解决限额问题?
  8. iOS如何转让 App 给公司或个人
  9. 网线/双绞线上各标识CAT, AWG, PR, UTP/STP/FTP/SFTP的含义
  10. HTML5 + CSS +JavaScript基本标签的使用(入门