配置文件格式规范
默认配置格式与参数加载位置
配置文件 ioc_golang.yaml 的默认参数默认配置格式为:
autowire:
${自动装载模型名}:
${SDID}:
${多例模式下的索引key1}:
param:
field1: value1 # 多例模式创建对象的构造参数
${多例模式下的索引key2}:
param:
field1: value2 # 多例模式创建对象的构造参数
param:
field1: value3 # 单例模式或多例模式未指定索引key 创建对象的构造参数
例如,一个基于多例模型的结构 Impl,实现了 Redis 接口,其多个实例参数可以配置为:
autowire:
normal:
github.com/alibaba/ioc-golang/extension/normal/redis.Impl:
db1-redis:
param:
address: localhost:6379
db: 1
db2-redis:
param:
address: localhost:6379
db: 2
param:
address: localhost:6379
db: 0
拥有 注入标签 normal:",db2-redis"
的字段,会从配置中读入参数,位置为标签指向的对象名db2-redis,db 为2。
NormalDB2Redis normalRedis.RedisIOCInterface `normal:",db2-redis"`
address: localhost:6379
db: 2
拥有标签 normal:""
的字段,会从配置中读入参数,db 为 0。
NormalDBRedis normalRedis.RedisIOCInterface `normal:""`
address: localhost:6379
db: 0
定制化参数加载器
参数加载器(param_loader) 可以在自动装载模型或 SD (结构描述符) 中定制化,例如一个基于 grpc 自动装载模型注入的客户端,我们已经在 grpc 自动装载模型中 定制化 了参数加载位置,为 autowire.grpc.${tag-value}
,因此对于如下字段:
HelloServiceClient api.HelloServiceClient `grpc:"hello-service"`
会从如下位置读取参数:address 设置为 “localhost:8080”
autowire:
grpc:
hello-service:
address: localhost:8080
同理,也可以由服务提供者在 SD 中传入参数加载器,进行定制化参数加载源。
配置文件中的特殊引用
声明环境变量
在配置文件中,可以使用 ${ENV_KEY}
的格式,引入环境变量。当环境变量存在时,将会被替换为环境变量的值。
config:
app:
config-value: myValue
config-value-from-env: ${MY_CONFIG_ENV_KEY} # 如环境变量存在,读取环境变量替换该字段
声明配置引用(nested)
config:
app:
config-value: myValue
config-value-from-env: ${MY_CONFIG_ENV_KEY} # 如环境变量存在,读取环境变量替换该字段
nested-config-value: ${config.app.config-value} # 引用 config.app.config-value 的值,为 myValue
nested-config-value-from-env: ${config.app.config-value-from-env} # 引用 config.app.config-value-from-env 的值,为环境变量替换后的值
更多配置文件的加载与使用例子,参考 example/config_file
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.
February 1, 2023: Update env.md (9848a53)