配置中心

配置相关

详细示例参考这里arrow-up-right

配置

## 配置中心相关
asjard:
  config:
    ## 添加配置默认配置源
    ## Set方法默认配置源, 如果不配置或者为空,则发送给所有配置源, 默认mem
    ## 具体是否能够添加配置到配置源中要看具体配置源是否实现Set功能
    # setDefaultSource: mem

配置获取

  • Get(key string, options *Options) any: 根据key获取配置

import "github.com/asjard/asjard/core/config"

val := config.Get("key", &Options{})
if val == nil {
 	// 配置不存在
 	// 或者使用config.Exist("key")判断
}
  • GetWithPrefix(prefix string, opts ...Option) map[string]any: 根据前缀获取所有配置,返回的key是props格式的

  • GetString(key string, defaultValue string, opts ...Option) string: 获取配置并返回string类型,如果配置不存在则返回默认值

  • GetStrings(key string, defaultValue []string, opts ...Option) []string: 获取配置并返回[]string类型, 如果配置不存在则返回默认值

  • GetByte(key string, defaultValue []byte, opts ...Option) []byte: 获取配置并返回[]byte类型, 如果配置不存在则返回默认值

  • GetBool(key string, defaultValue bool, opts ...Option) bool: 获取配置并返回bool类型

  • GetBools(key string, defaultValue []bool, opts ...Option) []bool

  • GetInt(key string, defaultValue int, opts ...Option) int

  • GetInts(key string, defaultValue []int, opts ...Option) []int

  • GetInt64(key string, defaultValue int64, opts ...Option) int64

  • GetInt64s(key string, defaultValue []int64, opts ...Option) []int64

  • GetInt32(key string, defaultValue int32, opts ...Option) int32

  • GetInt32s(key string, defaultValue []int32, opts ...Option) []int32

  • GetFloat64(key string, defaultValue float64, opts ...Option) float64

  • GetFloat64s(key string, defaultValue []float64, opts ...Option) []float64

  • GetFloat32(key string, defaultValue float32, opts ...Option) float32

  • GetFloat32s(key string, defaultValue []float32, opts ...Option) []float32

  • GetDuration(key string, defaultValue time.Duration, opts ...Option) time.Duration

字符串配置可参考time.ParseDuration, 支持单位"ns", "us" (or "µs"), "ms", "s", "m", "h".

  • GetTime(key string, defaultValue time.Time, opts ...Option) time.Time

  • Exist(key string) bool

  • GetAndUnmarshal(key string, outPtr any, opts ...Option) error : 获取配置并将对值反序列化

  • GetAndJsonUnmarshal(key string, outPtr any, opts ...Option) error: 配置值json反序列化

  • GetAndYamlUnmarshal(key string, outPtr any, opts ...Option) error : 配置值yaml反序列化

  • GetWithUnmarshal(prefix string, outPtr any, opts ...Option) error

  • GetWithJsonUnmarshal(prefix string, outPtr any, opts ...Option) error

  • GetWithYamlUnmarshal(prefix string, outPtr any, opts ...Option) error

加密内容始终都是以密文存储在内存中的,只有在获取时才会解密

  • 手动解密

  • 自动解密

配置监听

或者

  • AddListener(key string, callback func(*Event)) : 当key发生变化时通过callback通知

  • AddPatternListener(pattern string, callback func(*Event)) : pattern正则表达式匹配key变化时通过callback通知

配置源

框架内置环境变量,文件,内存配置源, 无需导入

支持
配置源
优先级
描述

cli

1

2

10

key/value, file模式配置

11

ket/value模式配置,file模式配置

nacos

12

没有删除事件

apollo

13

configmap

14

配置源优先级

数字越大的优先级越高, 相同key的配置,优先级高的配置源覆盖优先级低的配置源

自定义配置源

实现如下方法

多配置源同时使用

最后更新于