当前位置: 首页 > 网络应用技术

Golang著名图书馆查看|配置分辨率Artifact Viper使用详细说明

时间:2023-03-06 15:19:50 网络应用技术

  第一篇文章发表在公共帐户中:程序员阅读;欢迎关注,您可以尽快收到文章更新,请指出本文的来源!

  对于现代应用程序,尤其是中等大小的项目,当程序启动和运行时,需要传递许多参数以控制程序的行为。这些参数可以通过以下方式传递给程序:

  显然,对于GO项目,阅读命令行,环境变量和配置文件并不难,但是一一读取是很麻烦的。是否有第三方库?数据源的配置呢?

  是的,建议在此处使用库。Viper支持不同数据源和不同格式的读取配置文件。这是用于阅读GO项目中的配置的工件。今天,遵循本文并一起探索!?

  Viper是一种众所周知的GO项目配置解决方案。使用了许多著名的开源项目。例如,使用库,以及允许我们专注于自己的配置分析代码的项目代码的使用。

  Viper支持来自多个数据源的配置值,因此,当相同的配置密钥值得多个数据源的值时,Viper读取的优先级如下:

  优先示意图

  毒蛇的安装非常简单。像其他第三方袋一样,您只需要命令安装,例如:

  安装

  使用

  我们一直在说Viper以不同格式支持各种配置文件。它是什么格式?如下:

  Viper配置的关键值没有由案例区分,例如:

  了解什么是毒蛇之后,让我们看一下如何使用Viper来帮助我们阅读配置。

  使用包装名称Viper,例如::

  使用功能创建毒蛇结构,例如::

  实际上,这是GO软件包的编程约定,该约定封装在函数对象的实现中,并通过软件包名称调用。

  因此,下面的所有示例中的调用函数都使用Viper,可以参考名为Viper的对象或Viper.new()返回的对象。

  直接指定文件路径

  多人搜索

  读取配置文件时,可能会出现错误。如果我们想判断是否是因为找不到文件,我们可以确定错误是否为。

  除了读取配置文件外,Viper还支持配置值的配置值。Viper提供了四个功能来编写配置返回文件。

  WriteConfigWriteConfig函数将在预装路径的配置文件中写入配置。如果存在配置文件,则覆盖它。如果没有,它将被创建。

  SafeWriteConfigSafeWriterConfig和WriteConfig函数之间的唯一区别在于,如果存在配置文件,则将返回错误。

  WriteConfigasWriteConfigas和WriteConfig函数之间的差异需要传递配置文件存储路径,而Viper将根据文件后缀编写格式。

  SafeWriteConfigassafewRiteConfigas和WriteConfigas之间的唯一区别在于,如果存在配置文件,则返回错误。

  Viper支持监视配置文件,并将更改配置文件以重新阅读配置文件和回调功能。这可能会避免在每种配置更改时重新启动应用程序的麻烦。

  除了支持配置文件中的配置外,Viper还支持从io.Reader接口的实例读取配置(实际上,配置文件还实现了io.reader),例如:::::::

  您还可以使用函数将其显示为关键设置值。该方法具有最高优先级,将涵盖其他地方的密钥价值,例如:

  为配置密钥设置别名,以便我们可以使用其他名称访问配置而无需更改密钥。

  为了读取操作系统环境变量,Viper提供以下五个功能:

  有两种方法可以让Viper读取环境变量:

  使用函数setEnvprefix可以为所有环境变量设置前缀。此前缀将影响功能和功能

  大多数环境变量使用较低的数字(_)作为分离器。如果要替换它,则可以使用函数,例如:

  默认情况下,如果读取的环境值为空的值(请注意,不是存在环境变量,而是其值为空),则它将继续从优化的级别找到配置。行为,允许环境空气的可变值有效,您可以调用该功能:

  VIPER可以调和分析命令行相关的标志库以协调合作,从命令行中读取配置,该配置已在PFLAG库中构建 - 支持我们的接口,并为我们提供支持其他标志库的扩展

  Pflag

  如果我们不使用PFLAG库,则扩展其他标志,但是我们是否希望Viper帮助我们阅读命令行参数?

  VIPER支持存储或读取远程配置存储中心的配置和NOSQL(当前支持ETCD,领事,Firestore)配置,并且可以实时监视配置的更改,但是您需要在代码中介绍以下软件包:

  现在,远程配置中心存储以下JSON配置信息

  然后,我们可以通过以下方面连接到系统并读取配置。我们还可以打开Goroutine Real -Time监视配置。

  连接领事

  连接等

  连接Firestore

  连接配置中心后,您可以读取配置文件的配置,例如:

  监视配置系统,例如:

  另外,当Viper Connect ECT,领事,Firestore用于配置传输时,它还支持解密,这可以更安全。如果要实现加密的传输,则可以将功能替换为功能。

  Viper可以帮助我们阅读各个地方的配置。阅读配置后,如何使用它?

  直接面试

  对于多级配置密钥,您可以使用逗号分区号,例如:

  对于数组,您可以访问序列号,例如:

  您还可以使用功能来分析键的较低级别配置,例如:

  Viper提供了以下访问配置的功能:

  序列化读取配置后,除了使用上面列出的访问配置的功能外,配置还可以序列化到结构或地图中,这可以更方便地访问配置。

  示例代码

  配置文件:config.yaml

  分析代码:

  对于多层配置,Viper还支持序列化为复杂的strct,例如:

  我们将config.yaml更改为以下结构:

  示例程序

  好吧,这篇文章已经写在这里,已经很长了。我相信,如果您在这里看到,您应该对毒蛇有一个非常详细的了解。如果文章错误或需要补充内容,请留言要讨论!

  原始:https://juejin.cn/post/709641650804044685