写点什么

Go 语言 viper 库上手实践

作者:FunTester
  • 2024-08-16
    河北
  • 本文字数:1350 字

    阅读完需:约 4 分钟

在软件开发当中,不可避免需要将配置信息存放于配置文件当中。在 Java 项目当中,Spring 提供了非常强大的配置文件管理能力,这里就不多说了。今天分享一下 Go 语言中的配置文件管理类——viper

Viper 介绍

Viper 是 Go 语言中的一个流行配置管理库,它由开源社区开发并维护。它的主要功能是读取和解析各种配置文件(如 JSON、TOML、YAML、HCL 和 ENV 文件),并将这些配置值提供给应用程序。


Viper 功能还是很强大的,还支持优先级管理、自动重载配置、嵌套配置等等,而且简单易用。如果你使用 Go 语言开发项目需要配置管理,Viper 是不二的选择。


现在我们来进行 Viper 库的上手实践内容。

安装

打开终端并运行以下命令来安装 Viper


go get github.com/spf13/viper

简单的例子

下面是一个 Viper 使用的简单例子:


package main    import (      "fmt"      "github.com/spf13/viper")    func main() {      viper.SetConfigName("config") // 配置文件名称(无后缀)      viper.AddConfigPath("./conf") // 配置文件路径,      viper.SetConfigType("yaml")   // 配置文件后缀, 也可以是 json, toml, yaml, yml 等, 不设置则自动识别        // 读取配置文件, 如果出错则退出      if err := viper.ReadInConfig(); err != nil {         fmt.Printf("Error reading config file, %s\n", err)         return      }        // 获取配置值      appName := viper.GetString("app.name") // 读取字符串      port := viper.GetInt("app.port")       // 读取整型        fmt.Printf("App Name: %s\n", appName)      fmt.Printf("Port: %d\n", port)  }
复制代码


我的 config.yaml 配置文件内容如下:


app:    name: "FunTester"    port: 8080
复制代码


控制台打印:


App Name: FunTesterPort: 8080
复制代码

其他

设置默认值

可以为配置项设置默认值,如果配置文件中没有指定该项,则使用默认值。使用语法:


viper.SetDefault("app.port", 8080)
复制代码

自动重载

支持监视配置文件的变化,并在文件更改时自动重新加载配置。使用语法:


viper.WatchConfig()viper.OnConfigChange(func(e fsnotify.Event) {    fmt.Println("配置文件变更:", e.Name)})
复制代码

绑定环境变量

允许将环境变量与配置项绑定,使得环境变量可以覆盖配置文件中的值。使用语法:


viper.BindEnv("app.port", "APP_PORT")
复制代码

合并配置

可以将多个配置文件合并,允许配置分散在多个文件中。使用语法:


viper.SetConfigName("config")viper.AddConfigPath(".")viper.MergeInConfig()
复制代码

动态赋值

可以通过编程方式动态设置和更新配置项。使用语法:


viper.Set("app.name", "New FunTester")
复制代码

配置解析

支持将配置解析到结构体中,方便对复杂配置的管理。使用语法:


type Config struct {    App struct {        Name string        Port int    }}
var config Configif err := viper.Unmarshal(&config); err != nil { log.Fatalf("Unable to decode into struct: %v", err)}
复制代码


Viper 是一个功能全面、灵活且易于使用的配置管理库,适合各种规模的 Go 项目。它不仅支持多种配置格式,还提供了丰富的功能,如优先级管理、自动重载、动态配置等,帮助开发者高效地管理应用程序的配置。无论是简单的应用程序还是复杂的系统,Viper 都能提供强大的配置管理支持。

发布于: 刚刚阅读数: 4
用户头像

FunTester

关注

公众号:FunTester,800篇原创,欢迎关注 2020-10-20 加入

Fun·BUG挖掘机·性能征服者·头顶锅盖·Tester

评论

发布
暂无评论
Go 语言 viper 库上手实践_FunTester_InfoQ写作社区