You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
kratos/config
chenzhihui 5928009fa0 add docs related 4 years ago
..
file init v2 4 years ago
README.md add docs related 4 years ago
config.go init v2 4 years ago
options.go init v2 4 years ago
reader.go init v2 4 years ago
source.go init v2 4 years ago
value.go init v2 4 years ago

README.md

Config

Example Usage

可以指定多个配置源,config 会进行合并成 map[string]interface{},然后通过 Scan 或者 Value 获取值内容;

c := config.New(
    config.WithSource(
        file.NewSource(path),
    ),
    config.WithDecoder(func(kv *config.KeyValue, v map[string]interface{}) error {
        // kv.Key
        // kv.Value
        // kv.Metadata
        // 自定义实现对应的数据源解析,如果是配置中心数据源也可以指定metadata进行识别配置类型
        return yaml.Unmarshal(kv.Value, v)
    }),
)
// 加载配置源:
if err := c.Load(); err != nil {
    panic(err)
}
// 获取对应的值内容:
name, err := c.Value("service").String()
// 解析到结构体(由于已经合并到map[string]interface{},所以需要指定 jsonName 进行解析):
var v struct {
    Service string `json:"service"`
    Version string `json:"version"`
}
if err := c.Scan(&v); err != nil {
    panic(err)
}
// 监听值内容变更
c.Watch("service.name", func(key string, value config.Value) {
    // 值内容变更
})