配置管理
配置管理(Configuration Management)是现代应用程序的核心基础设施,用于统一管理应用程序的设置、参数和环境相关配置信息。通过多配置源整合、类型安全访问和分层结构管理,有效解决配置分散、类型错误和环境差异等问题,提高应用程序的灵活性和可维护性。
快速启动
只需要以下 3 个步骤即可开始使用配置管理框架:
cangjie
import spire_extensions_configuration.*
main() {
// 1. 定义配置源
let json = ###"
{
"connectionString": {
"mysql": "mysql://localhost:3306"
}
}
"###
// 2. 创建并配置管理器
let configuration = ConfigurationManager()
.addJsonString(json)
.build()
// 3. 使用配置
println(configuration["connectionString:mysql"])
}配置读写
配置的键名不区分大小写
读取配置
cangjie
let json = #"
{
"logging": {
"logLevel": {
"default": "Error",
"spire.lifetime.*": "Info"
}
},
"connectionStrings": {
"mysql": "mysql://localhost:3306"
}
}
"#
let configuration = ConfigurationManager()
.addJsonString(json)
.build()
// 字符串读取
configuration["connectionStrings:mysql"] |> println
// 类型化读取
configuration.getValue<String>("connectionStrings:mysql") |> println
// 读取节
let section = configuration.getSection("logging:logLevel")
section.getValue<String>("default") |> println
section.getValue<String>("spire.lifetime.*") |> println
// 遍历节
for (pattern in section.getChildren()) {
"${pattern.key}: ${pattern.value}" |> println
}写入配置
写入配置会往所有配置源写入,请至少提供一个数据源
cangjie
let configuration = ConfigurationManager()
.addMemory()
.build()
// 写入配置
configuration["port"] = "8080"
configuration.getValue<Int64>("port") |> println内置配置源
SPIRE中内置了如下配置:
- 内存
- json
- 命令行参数(
--name1=value --name2=value) - 环境变量
cangjie
let configuration = ConfigurationManager()
.addMemory([("port", "8080")]) // 内存配置
.addJsonFile("appsettings.json") // 读取json配置文件
.addCmdArgs(args) // 读取命令行参数
.addEnvVars("SPIRE_") // 读取SPIRE_开头的环境变量
.build()除了内置的数据源,用户也可以提供额外的配置,可以参考json等配置源的实现源码。