为了解决配置管理逻辑分散的问题,我们创建了一个统一的配置管理模块,该模块将所有配置相关的操作集中在一个地方处理。
type ConfigManager struct {
configPath string
mutex sync.RWMutex
config *types.GlobalConfig
}
定义了配置管理的统一接口,便于测试和扩展。
通过 GetConfigManager() 函数提供单例访问。
LoadConfig() - 从文件加载配置SaveConfig() - 将配置保存到文件UpdateConfig() - 更新当前配置为每个配置部分提供了专门的 getter 和 setter:
GetBaseConfig() / SetBaseConfig()GetWebConfig() / SetWebConfig()GetMetricsConfig() / SetMetricsConfig()使用读写锁确保多协程环境下的安全访问。
cfgManager := config.GetConfigManager()
err := cfgManager.LoadConfig()
if err != nil {
// 处理错误
}
cfg := cfgManager.GetConfig()
baseCfg := cfgManager.GetBaseConfig()
newBaseCfg := types.BaseConfig{...}
cfgManager.SetBaseConfig(newBaseCfg)
err := cfgManager.SaveConfig() // 保存到文件
以下文件已更新以使用新的配置管理器:
/internal/api/server.go - API服务器配置加载/internal/api/handlers.go - API处理器配置访问/internal/api/auth.go - 认证中间件配置访问/internal/app/ops.go - 操作命令配置访问/internal/daemon/dp.go - 数据平面配置访问/internal/daemon/agent.go - 控制平面配置访问/internal/core/sync.go - 同步模块配置访问