• golang模块viper读取配置文件


    一、介绍

    Viper是一个方便Go语言应用程序处理配置信息的库。它可以处理多种格式的配置。它支持的特性:

    • 设置默认值
    • 从JSON、TOML、YAML、HCL和Java properties文件中读取配置数据
    • 可以监视配置文件的变动、重新读取配置文件
    • 从环境变量中读取配置数据
    • 从远端配置系统中读取数据,并监视它们(比如etcd、Consul)
    • 从命令参数中读物配置
    • 从buffer中读取
    • 调用函数设置配置信息

    简单的设置默认值

    viper.SetDefault("time", "2019-7-14")
    viper.SetDefault("notifyList", []string{"maple","ffm"})

    监视配置文件,重新读取配置数据

    package main
    
    import (
        "fmt"
        "github.com/fsnotify/fsnotify"
        "github.com/spf13/viper"
    )
    viper:=viper.New()
    viper.WatchConfig()
    viper.OnConfigChange(func(e fsnotify.Event) {
      fmt.Println("Config file changed:", e.Name)
    })

    二、读取config.json

    #json文件
    {
      "appId": "123456789",
      "secret": "maple123456",
      "host": {
        "address": "localhost",
        "port": 5799
      }
    }
    package main
    
    import (
        "fmt"
        "github.com/spf13/viper"
    )
    
    //定义config结构体
    type Config struct {
        AppId string
        Secret string
        Host Host
    }
    //json中的嵌套对应结构体的嵌套
    type Host struct {
        Address string
        Port int
    }
    
    func main() {
        config := viper.New()
        config.AddConfigPath("./kafka_demo")
        config.SetConfigName("config")
        config.SetConfigType("json")
        if err := config.ReadInConfig(); err != nil {
            panic(err)
        }
        fmt.Println(config.GetString("appId"))
        fmt.Println(config.GetString("secret"))
        fmt.Println(config.GetString("host.address"))
        fmt.Println(config.GetString("host.port"))
    
        //直接反序列化为Struct
        var configjson Config
        if err :=config.Unmarshal(&configjson);err !=nil{
            fmt.Println(err)
        }
    
        fmt.Println(configjson.Host)
        fmt.Println(configjson.AppId)
        fmt.Println(configjson.Secret)
    
    }
  • 相关阅读:
    根据类生成数据库连接
    C# 获取动态类中所有的字段
    mysql 基础配置经验
    CSS小笔记
    jquery知识location.search
    Eclipse 启动tomcat 访问主页报错404
    window下安裝redis服務
    用maven创建web工程
    @WebListener 注解方式实现监听
    Dubbo-admin管理平台的安装
  • 原文地址:https://www.cnblogs.com/angelyan/p/11185113.html
Copyright © 2020-2023  润新知