项目简介
Doggie是一款功能强大的配置管理工具,支持多种配置源(如命令行参数、环境变量、本地配置文件、远程配置)、多种配置格式(如JSON、YAML、TOML等),具备灵活的配置读取、解析及监控方式。
项目的主要特性和功能
- 配置读取:支持从命令行参数、环境变量、本地配置文件和远程配置中读取配置信息。
- 编码:支持自定义解码方法,同时提供内置解码功能。
- 监控:可监控本地配置文件和远程配置的变更,并在变更时触发回调函数。
- 查找顺序:定义了配置查找优先级,依次为命令行参数、环境变量、本地配置文件、远程配置和默认值。
- 其他:可设置默认值。
- 不提供功能:不提供写配置文件功能,同时不支持使用别名,以保证程序的可维护性。
安装使用步骤
前提条件
用户已经下载了本项目的源码文件。
具体步骤
- 在代码中引入必要的包,包括
log
和doggie
。 - 创建
doggie
实例:dog := doggie.New()
。 - 设置配置文件路径和类型,可使用
SetConfigFile
和SetFileType
方法。 - 调用
ReadConfig()
方法读取配置。 - 使用
Get()
方法获取配置项,该方法会按照优先级顺序获取配置。 - 可选步骤:使用
RegisterDecoder
方法设置自定义解码器。 - 可选步骤:使用
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】