littlebot
Published on 2025-04-09 / 2 Visits
0

【源码】基于Go语言的配置管理工具Doggie

项目简介

Doggie是一款功能强大的配置管理工具,支持多种配置源(如命令行参数、环境变量、本地配置文件、远程配置)、多种配置格式(如JSON、YAML、TOML等),具备灵活的配置读取、解析及监控方式。

项目的主要特性和功能

  • 配置读取:支持从命令行参数、环境变量、本地配置文件和远程配置中读取配置信息。
  • 编码:支持自定义解码方法,同时提供内置解码功能。
  • 监控:可监控本地配置文件和远程配置的变更,并在变更时触发回调函数。
  • 查找顺序:定义了配置查找优先级,依次为命令行参数、环境变量、本地配置文件、远程配置和默认值。
  • 其他:可设置默认值。
  • 不提供功能:不提供写配置文件功能,同时不支持使用别名,以保证程序的可维护性。

安装使用步骤

前提条件

用户已经下载了本项目的源码文件。

具体步骤

  1. 在代码中引入必要的包,包括logdoggie
  2. 创建doggie实例:dog := doggie.New()
  3. 设置配置文件路径和类型,可使用SetConfigFileSetFileType方法。
  4. 调用ReadConfig()方法读取配置。
  5. 使用Get()方法获取配置项,该方法会按照优先级顺序获取配置。
  6. 可选步骤:使用RegisterDecoder方法设置自定义解码器。
  7. 可选步骤:使用WatchConfig()方法监控配置的变更。

示例代码

```go package main

import ( "log"

)

type Worker struct { Name string MaxWorkers int MaxIdleWorkers int MaxQueueSize int WorkerWeight []int }

func main() { dog := doggie.New() dog.SetConfigFile("./app.yaml") dog.ReadConfig()

//直接获取配置
log.Println("httpPort", dog.Get("httpPort").Int())
log.Println("grpcPort", dog.Get("httpPort").Int())

//通过默认规则获取
worker := Worker{}
dog.Get("worker").Unmarshal(&worker)
log.Println(worker)

//解码一个切片
var uints []uint
if err := dog.Get("worker.workerWeight").Unmarshal(&uints); err != nil {
    log.Println(err)
}
log.Println(uints)

} ```

注意事项

  • 使用自定义解码器时,确保解码后的数据结构为map[string]interface{},数组需满足[]interface{}类型。
  • 远程配置的实现需要按照RemoteProvider接口来编写,如HttpProvider
  • 确保提供的配置文件路径正确,且文件格式与SetFileType中设置的类型一致。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】