Documentation
¶
Overview ¶
* @Author: kamalyes 501893067@qq.com * @Date: 2025-11-12 15:00:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2025-11-12 15:00:00 * @FilePath: \go-config\callback_manager.go * @Description: 通用回调管理组件,提供统一的事件回调机制 * * Copyright (c) 2025 by kamalyes, All Rights Reserved.
* @Author: kamalyes 501893067@qq.com * @Date: 2025-11-12 16:00:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2025-11-12 16:00:00 * @FilePath: \go-config\config_builder.go * @Description: 配置管理器构建器,提供链式API和灵活的配置发现机制 * * Copyright (c) 2025 by kamalyes, All Rights Reserved.
* @Author: kamalyes 501893067@qq.com * @Date: 2025-11-27 09:30:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2025-11-27 09:30:00 * @FilePath: \go-config\config_unmarshaler.go * @Description: 通用配置反序列化工具 * * Copyright (c) 2025 by kamalyes, All Rights Reserved.
* @Author: kamalyes 501893067@qq.com * @Date: 2025-11-12 15:30:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2025-11-22 17:08:23 * @FilePath: \go-config\hot_reload.go * @Description: 重构后的配置热更新模块,使用通用回调管理器 * * Copyright (c) 2025 by kamalyes, All Rights Reserved.
* @Author: kamalyes 501893067@qq.com * @Date: 2025-11-12 16:20:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2025-11-12 16:20:00 * @FilePath: \go-config\integrated_manager_refactored.go * @Description: 重构后的集成配置管理器,专注于核心管理功能 * * Copyright (c) 2025 by kamalyes, All Rights Reserved.
Index ¶
- Variables
- func ClearGlobalContextManager()
- func ErrAddWatcher(err error) error
- func ErrAutoDiscoverConfigFiles(err error) error
- func ErrBreakerHalfOpenSuccessesInvalid(taskName string) error
- func ErrBreakerMaxFailuresInvalid(taskName string) error
- func ErrBreakerResetTimeoutInvalid(taskName string) error
- func ErrCallbackIDExists(id string) error
- func ErrCallbackIDNotFound(id string) error
- func ErrConfigFileNotFound(suggestedPath string) error
- func ErrConfigTypeMismatch(expected, actual any) error
- func ErrCreateDir(err error) error
- func ErrCreateHotReloader(err error) error
- func ErrCreateManager(err error) error
- func ErrCreateOutputDir(err error) error
- func ErrCreateWatcher(err error) error
- func ErrCronSpecEmpty(taskName string) error
- func ErrDiscoverConfigFiles(err error) error
- func ErrEnvTypeRegistered(env EnvironmentType) error
- func ErrEnvVarNotSet(key string) error
- func ErrFindConfigByPattern(err error) error
- func ErrGenerateDefaultConfig(err error) error
- func ErrGenerateJSON(err error) error
- func ErrGenerateYAML(err error) error
- func ErrGetAbsPath(err error) error
- func ErrInvalidTimezone(timezone string, err error) error
- func ErrMarshalJSON(err error) error
- func ErrMarshalYAML(err error) error
- func ErrMaxConcurrentInvalid(taskName string) error
- func ErrModuleConfigEmpty(moduleName string) error
- func ErrModuleConfigSerializeFailed(moduleName string, err error) error
- func ErrModuleDefaultFuncNil(moduleName string) error
- func ErrModuleNotFound(moduleName string) error
- func ErrModuleValidationFailed(failedModules []string) error
- func ErrModulesValidationFailed(modules string) error
- func ErrNoMatchingConfig(pattern string) error
- func ErrPartialModuleFailed(successCount, failCount int) error
- func ErrPriorityOutOfRange(taskName string) error
- func ErrReadConfigFile(err error) error
- func ErrResolveConfigPath(err error) error
- func ErrScanDir(err error) error
- func ErrSearchPathNotExist(path string) error
- func ErrStartHotReloader(err error) error
- func ErrStartManager(err error) error
- func ErrStopHotReloader(err error) error
- func ErrTimeoutInvalid(taskName string) error
- func ErrUnmarshalConfig(err error) error
- func ErrUnsupportedFormat(extension string) error
- func ErrWriteConfigFile(err error) error
- func ErrWriteJSON(err error) error
- func ErrWriteYAML(err error) error
- func FlexibleMatchName(mapKey, fieldName string) bool
- func GetConfigAs[T any](icm *IntegratedConfigManager) (*T, error)
- func GetConfigFromContext(ctx context.Context) (any, bool)
- func GetCurrentEnvironmentLevel() int
- func GetEnvPrefixes(env EnvironmentType) []string
- func GetEnvironmentLevel(env EnvironmentType) int
- func GetMetadataFromContext(ctx context.Context) (map[string]any, bool)
- func IsAnyOf(envs ...EnvironmentType) bool
- func IsDebug() bool
- func IsDemo() bool
- func IsDev() bool
- func IsDevelopmentLevel() bool
- func IsEnvironment(env EnvironmentType) bool
- func IsIntegration() bool
- func IsLocal() bool
- func IsProduction() bool
- func IsProductionLevel() bool
- func IsStaging() bool
- func IsTest() bool
- func IsTestingLevel() bool
- func IsUAT() bool
- func ListAllEnvPrefixes() map[EnvironmentType][]string
- func MustGetConfigAs[T any](icm *IntegratedConfigManager) *T
- func RegisterEnvPrefixes(env EnvironmentType, prefixes ...string)
- func SetContextKey(options *ContextKeyOptions)
- func SetCurrentEnvironment(env EnvironmentType)
- func SetGlobalBuilderFactory(factory *BuilderFactory)
- func UnmarshalWithFlexibleNaming(v *viper.Viper, target interface{}) error
- func UnmarshalWithKebabToSnake(v *viper.Viper, target interface{}) error
- func WithGlobalConfig(ctx context.Context) context.Context
- type BuilderFactory
- type CallbackEvent
- type CallbackFunc
- type CallbackManager
- type CallbackOptions
- type CallbackType
- type CommonCallbackManager
- func (cm *CommonCallbackManager) ClearCallbacks()
- func (cm *CommonCallbackManager) GetCallbackCount() int
- func (cm *CommonCallbackManager) GetCallbackInfo(id string) (CallbackOptions, bool)
- func (cm *CommonCallbackManager) HasCallback(id string) bool
- func (cm *CommonCallbackManager) ListCallbacks() []string
- func (cm *CommonCallbackManager) RegisterCallback(callback CallbackFunc, options CallbackOptions) error
- func (cm *CommonCallbackManager) TriggerCallbacks(ctx context.Context, event CallbackEvent) error
- func (cm *CommonCallbackManager) UnregisterCallback(id string) error
- type ConfigBuilder
- type ConfigBuilderOptions
- type ConfigContext
- type ConfigDiscovery
- func (cd *ConfigDiscovery) DiscoverConfigFiles(searchPath string, env EnvironmentType) ([]*ConfigFileInfo, error)
- func (cd *ConfigDiscovery) FindBestConfigFile(searchPath string, env EnvironmentType) (*ConfigFileInfo, error)
- func (cd *ConfigDiscovery) FindConfigFileByPattern(searchPath, pattern string, env EnvironmentType) ([]*ConfigFileInfo, error)
- func (cd *ConfigDiscovery) ScanDirectory(searchPath string) ([]*ConfigFileInfo, error)
- type ConfigFileInfo
- type ConfigFormatter
- type ContextKey
- type ContextKeyHelper
- func (ContextKeyHelper) IsEnvironment(ctx context.Context, env EnvironmentType) bool
- func (ContextKeyHelper) MustGetConfig(ctx context.Context) any
- func (ContextKeyHelper) MustGetEnvironment(ctx context.Context) EnvironmentType
- func (ContextKeyHelper) NewConfigContext() context.Context
- func (ContextKeyHelper) NewContextWithDeadline(deadline time.Time) (context.Context, context.CancelFunc)
- func (ContextKeyHelper) NewContextWithTimeout(timeout time.Duration) (context.Context, context.CancelFunc)
- type ContextKeyOptions
- type ContextManager
- func (cm *ContextManager) GetConfigContext() *ConfigContext
- func (cm *ContextManager) GetCurrentConfig() any
- func (cm *ContextManager) GetCurrentEnvironment() EnvironmentType
- func (cm *ContextManager) GetMetadata(key string) (any, bool)
- func (cm *ContextManager) SetMetadata(key string, value any)
- func (cm *ContextManager) UpdateConfig(config any)
- func (cm *ContextManager) WithConfig(ctx context.Context) context.Context
- type Environment
- func (e *Environment) CheckAndUpdateEnv()
- func (e *Environment) ClearCallbacks()
- func (e *Environment) ClearEnv()
- func (e *Environment) ListCallbacks() []string
- func (e *Environment) RegisterCallback(id string, callback EnvironmentCallback, priority int, async bool) error
- func (e *Environment) RegisterEnvironment(env EnvironmentType) error
- func (e *Environment) SetCheckFrequency(frequency time.Duration) *Environment
- func (e *Environment) SetEnvironment(value EnvironmentType) *Environment
- func (e *Environment) StopWatch()
- func (e *Environment) UnregisterCallback(id string) error
- type EnvironmentCallback
- type EnvironmentCallbackInfo
- type EnvironmentInterface
- type EnvironmentManager
- func (em *EnvironmentManager) DetectEnvironmentType(envString string) (EnvironmentType, bool)
- func (em *EnvironmentManager) IsEnvironment(envString string, envType EnvironmentType) bool
- func (em *EnvironmentManager) IsRegistered(envType EnvironmentType) bool
- func (em *EnvironmentManager) RegisterEnvironment(envType EnvironmentType, aliases ...string)
- type EnvironmentType
- type HotReloadConfig
- type HotReloader
- type IntegratedConfigManager
- func CreateIntegratedManager(config interface{}, configPath string, env EnvironmentType) (*IntegratedConfigManager, error)
- func NewIntegratedConfigManager(config interface{}, options *IntegratedConfigOptions) (*IntegratedConfigManager, error)
- func QuickBuild[T any](config *T, configPath string, env EnvironmentType) (*IntegratedConfigManager, error)
- func QuickStart[T any](config *T, configPath string, env EnvironmentType) (*IntegratedConfigManager, error)
- func (icm *IntegratedConfigManager) GetConfig() interface{}
- func (icm *IntegratedConfigManager) GetConfigMetadata() map[string]interface{}
- func (icm *IntegratedConfigManager) GetConfigPath() string
- func (icm *IntegratedConfigManager) GetContextManager() *ContextManager
- func (icm *IntegratedConfigManager) GetEnvironment() EnvironmentType
- func (icm *IntegratedConfigManager) GetEnvironmentManager() *Environment
- func (icm *IntegratedConfigManager) GetHotReloader() HotReloader
- func (icm *IntegratedConfigManager) GetViper() *viper.Viper
- func (icm *IntegratedConfigManager) IsRunning() bool
- func (icm *IntegratedConfigManager) MustStart(ctx context.Context)
- func (icm *IntegratedConfigManager) RegisterConfigCallback(callback CallbackFunc, options CallbackOptions) error
- func (icm *IntegratedConfigManager) RegisterEnvironmentCallback(id string, callback EnvironmentCallback, priority int, async bool) error
- func (icm *IntegratedConfigManager) SetEnvironment(env EnvironmentType) error
- func (icm *IntegratedConfigManager) Start(ctx context.Context) error
- func (icm *IntegratedConfigManager) Stop() error
- func (icm *IntegratedConfigManager) UnregisterConfigCallback(id string) error
- func (icm *IntegratedConfigManager) UnregisterEnvironmentCallback(id string) error
- func (icm *IntegratedConfigManager) ValidateConfig() error
- func (icm *IntegratedConfigManager) WithContext(ctx context.Context) context.Context
- type IntegratedConfigOptions
- type ManagerBuilder
- func (b *ManagerBuilder[T]) Build() (*IntegratedConfigManager, error)
- func (b *ManagerBuilder[T]) BuildAndStart(ctx ...context.Context) (*IntegratedConfigManager, error)
- func (b *ManagerBuilder[T]) MustBuildAndStart(ctx ...context.Context) *IntegratedConfigManager
- func (b *ManagerBuilder[T]) WithConfigPath(path string) ConfigBuilder[T]
- func (b *ManagerBuilder[T]) WithContext(options *ContextKeyOptions) ConfigBuilder[T]
- func (b *ManagerBuilder[T]) WithEnvironment(env EnvironmentType) ConfigBuilder[T]
- func (b *ManagerBuilder[T]) WithHotReload(config *HotReloadConfig) ConfigBuilder[T]
- func (b *ManagerBuilder[T]) WithPattern(pattern string) ConfigBuilder[T]
- func (b *ManagerBuilder[T]) WithPrefix(prefix string) ConfigBuilder[T]
- func (b *ManagerBuilder[T]) WithSearchPath(path string) ConfigBuilder[T]
- type ModuleConfig
- type SmartConfigGenerator
- func (sg *SmartConfigGenerator) CleanupBackupFiles(maxAge time.Duration) error
- func (sg *SmartConfigGenerator) DisableModule(moduleName string) error
- func (sg *SmartConfigGenerator) EnableModule(moduleName string) error
- func (sg *SmartConfigGenerator) EnableOnlyModules(moduleNames ...string) error
- func (sg *SmartConfigGenerator) GenerateAllConfigs() error
- func (sg *SmartConfigGenerator) GenerateModuleConfig(module ModuleConfig) error
- func (sg *SmartConfigGenerator) GenerateModulesByNames(moduleNames ...string) error
- func (sg *SmartConfigGenerator) GetEnabledModules() []string
- func (sg *SmartConfigGenerator) GetModuleInfo(moduleName string) (*ModuleConfig, error)
- func (sg *SmartConfigGenerator) GetModuleList() []string
- func (sg *SmartConfigGenerator) PrintModuleStatus()
- func (sg *SmartConfigGenerator) UpdateModuleConfig(moduleName string, updates map[string]interface{}) error
- func (sg *SmartConfigGenerator) ValidateAllModules() error
- func (sg *SmartConfigGenerator) ValidateModuleConfig(moduleName string) error
- func (sg *SmartConfigGenerator) WithBackupExisting(backup bool) *SmartConfigGenerator
- func (sg *SmartConfigGenerator) WithForceRegenerate(force bool) *SmartConfigGenerator
- func (sg *SmartConfigGenerator) WithIncludeComments(include bool) *SmartConfigGenerator
- func (sg *SmartConfigGenerator) WithLogger(logger *gologger.Logger) *SmartConfigGenerator
Constants ¶
This section is empty.
Variables ¶
var ( // 环境管理相关 ErrCallbackIDEmpty = errors.New("回调ID不能为空") ErrConfigEmpty = errors.New("配置为空") ErrNoConfigPath = errors.New("未指定配置路径或搜索选项") // 管理器状态相关 ErrManagerRunning = errors.New("集成配置管理器已在运行") ErrManagerNotRunning = errors.New("集成配置管理器未运行") ErrReloaderRunning = errors.New("热更新器已经在运行") ErrReloaderNotRunning = errors.New("热更新器未运行") )
预定义的基础错误(无参数的错误)
var ContextHelper = ContextKeyHelper{}
创建全局上下文辅助工具实例
var DefaultConfigNames = []string{"config", "application", "app", "gateway", "service"}
DefaultConfigNames 默认配置文件名
var DefaultEnvPrefixes = map[EnvironmentType][]string{ EnvDevelopment: {"dev", "develop", "development"}, EnvLocal: {"local", "localhost"}, EnvTest: {"test", "testing", "qa", "sit"}, EnvStaging: {"staging", "stage", "stg", "pre", "preprod", "pre-prod", "fat", "gray", "grey", "canary"}, EnvProduction: {"prod", "production", "prd", "release", "live", "online", "master", "main"}, EnvDebug: {"debug", "debugging", "dbg"}, EnvDemo: {"demo", "demonstration", "showcase", "preview", "sandbox"}, EnvUAT: {"uat", "acceptance", "user-acceptance", "beta"}, EnvIntegration: {"integration", "int", "ci", "integration-test", "integ"}, EnvChina: {"china", "cn", "chn"}, EnvJapan: {"japan", "jp", "jpn"}, EnvKorea: {"korea", "kr", "kor", "south-korea", "southkorea"}, EnvIndia: {"india", "in", "ind"}, EnvSingapore: {"singapore", "sg", "sgp"}, EnvThailand: {"thailand", "th", "tha", "thai"}, EnvVietnam: {"vietnam", "vn", "vnm", "viet"}, EnvMalaysia: {"malaysia", "my", "mys"}, EnvIndonesia: {"indonesia", "id", "idn"}, EnvPhilippines: {"philippines", "ph", "phl"}, EnvMyanmar: {"myanmar", "mm", "mmr", "burma"}, EnvLaos: {"laos", "la", "lao"}, EnvCambodia: {"cambodia", "kh", "khm"}, EnvPakistan: {"pakistan", "pk", "pak"}, EnvBangladesh: {"bangladesh", "bd", "bgd"}, EnvSriLanka: {"srilanka", "lk", "lka", "sri-lanka"}, EnvNepal: {"nepal", "np", "npl"}, EnvHongKong: {"hongkong", "hk", "hkg", "hong-kong"}, EnvTaiwan: {"taiwan", "tw", "twn"}, EnvMacao: {"macao", "mo", "mac", "macau"}, EnvUK: {"uk", "gb", "gbr", "united-kingdom", "britain", "england"}, EnvGermany: {"germany", "de", "deu", "deutschland"}, EnvFrance: {"france", "fr", "fra"}, EnvItaly: {"italy", "it", "ita", "italia"}, EnvSpain: {"spain", "es", "esp", "espana"}, EnvNetherlands: {"netherlands", "nl", "nld", "holland"}, EnvBelgium: {"belgium", "be", "bel"}, EnvSwitzerland: {"switzerland", "ch", "che"}, EnvAustria: {"austria", "at", "aut"}, EnvSweden: {"sweden", "se", "swe"}, EnvNorway: {"norway", "no", "nor"}, EnvDenmark: {"denmark", "dk", "dnk"}, EnvFinland: {"finland", "fi", "fin"}, EnvPoland: {"poland", "pl", "pol"}, EnvRussia: {"russia", "ru", "rus"}, EnvTurkey: {"turkey", "tr", "tur"}, EnvUSA: {"usa", "us", "united-states", "america"}, EnvCanada: {"canada", "ca", "can"}, EnvMexico: {"mexico", "mx", "mex"}, EnvBrazil: {"brazil", "br", "bra", "brasil"}, EnvArgentina: {"argentina", "ar", "arg"}, EnvChile: {"chile", "cl", "chl"}, EnvColombia: {"colombia", "co", "col"}, EnvPeru: {"peru", "pe", "per"}, EnvAustralia: {"australia", "au", "aus"}, EnvNewZealand: {"newzealand", "nz", "nzl", "new-zealand"}, EnvSouthAfrica: {"southafrica", "za", "zaf", "south-africa"}, EnvEgypt: {"egypt", "eg", "egy"}, EnvNigeria: {"nigeria", "ng", "nga"}, EnvKenya: {"kenya", "ke", "ken"}, EnvUAE: {"uae", "ae", "are", "emirates", "dubai"}, EnvSaudiArabia: {"saudiarabia", "sa", "sau", "saudi-arabia", "saudi"}, EnvIsrael: {"israel", "il", "isr"}, EnvQatar: {"qatar", "qa", "qat"}, }
DefaultEnvPrefixes 全局环境前缀映射(统一定义,避免重复) 覆盖常见的环境命名约定,支持多种风格:短名、全名、连字符等
var DefaultSupportedExtensions = []string{".yaml", ".yml", ".json", ".toml", ".properties"}
DefaultSupportedExtensions 默认支持的配置文件扩展名
var ErrCallbackFuncNil = errors.New("回调函数不能为空")
ErrCallbackFuncNil 回调函数不能为空错误
var ErrNoConfigCandidate = errors.New("未找到任何配置文件候选")
ErrNoConfigCandidate 未找到任何配置文件候选错误
Functions ¶
func ClearGlobalContextManager ¶
func ClearGlobalContextManager()
ClearGlobalContextManager 清理全局上下文管理器(主要用于测试)
func ErrAutoDiscoverConfigFiles ¶
ErrAutoDiscoverConfigFiles 自动发现配置文件失败错误
func ErrBreakerHalfOpenSuccessesInvalid ¶
ErrBreakerHalfOpenSuccessesInvalid 熔断器half_open_successes无效错误
func ErrBreakerMaxFailuresInvalid ¶
ErrBreakerMaxFailuresInvalid 熔断器max_failures无效错误
func ErrBreakerResetTimeoutInvalid ¶
ErrBreakerResetTimeoutInvalid 熔断器reset_timeout无效错误
func ErrCallbackIDNotFound ¶
ErrCallbackIDNotFound 回调ID不存在错误
func ErrConfigFileNotFound ¶
ErrConfigFileNotFound 未找到配置文件错误
func ErrConfigTypeMismatch ¶
ErrConfigTypeMismatch 配置类型不匹配错误
func ErrCreateHotReloader ¶
ErrCreateHotReloader 创建热更新器失败错误
func ErrCronSpecEmpty ¶
ErrCronSpecEmpty 任务cron_spec为空错误
func ErrDiscoverConfigFiles ¶
ErrDiscoverConfigFiles 发现配置文件失败错误
func ErrEnvTypeRegistered ¶
func ErrEnvTypeRegistered(env EnvironmentType) error
ErrEnvTypeRegistered 环境类型已注册错误
func ErrFindConfigByPattern ¶
ErrFindConfigByPattern 按模式查找配置文件失败错误
func ErrGenerateDefaultConfig ¶
ErrGenerateDefaultConfig 生成默认配置失败错误
func ErrInvalidTimezone ¶
ErrInvalidTimezone 无效的时区错误
func ErrMaxConcurrentInvalid ¶
ErrMaxConcurrentInvalid 任务max_concurrent无效错误
func ErrModuleConfigEmpty ¶
ErrModuleConfigEmpty 模块默认配置为空错误
func ErrModuleConfigSerializeFailed ¶
ErrModuleConfigSerializeFailed 模块配置序列化失败错误
func ErrModuleDefaultFuncNil ¶
ErrModuleDefaultFuncNil 模块默认函数为空错误
func ErrModuleValidationFailed ¶
ErrModuleValidationFailed 模块配置验证失败错误
func ErrModulesValidationFailed ¶
ErrModulesValidationFailed 模块配置验证失败错误(带模块列表)
func ErrNoMatchingConfig ¶
ErrNoMatchingConfig 未找到匹配模式的配置文件错误
func ErrPartialModuleFailed ¶
ErrPartialModuleFailed 部分模块配置生成失败错误
func ErrPriorityOutOfRange ¶
ErrPriorityOutOfRange 任务priority超出范围错误
func ErrResolveConfigPath ¶
ErrResolveConfigPath 解析配置路径失败错误
func ErrSearchPathNotExist ¶
ErrSearchPathNotExist 搜索路径不存在错误
func ErrTimeoutInvalid ¶
ErrTimeoutInvalid 任务timeout无效错误
func ErrUnsupportedFormat ¶
ErrUnsupportedFormat 不支持的配置文件格式错误
func FlexibleMatchName ¶
FlexibleMatchName 灵活的键名匹配函数 支持多种命名约定之间的自动转换
匹配策略(按优先级): 1. 直接匹配(快速路径) 2. 大小写不敏感匹配 3. kebab-case 转 snake_case 4. camelCase/PascalCase 转 snake_case
参数:
mapKey: 配置文件中的键名(可能是 kebab-case、camelCase 等) fieldName: 结构体字段的 mapstructure 标签名(通常是 snake_case)
返回:
bool: 是否匹配成功
func GetConfigAs ¶
func GetConfigAs[T any](icm *IntegratedConfigManager) (*T, error)
GetConfigAs 获取指定类型的配置
func GetConfigFromContext ¶
GetConfigFromContext 从上下文中获取配置信息
func GetCurrentEnvironmentLevel ¶
func GetCurrentEnvironmentLevel() int
GetCurrentEnvironmentLevel 获取当前环境级别
func GetEnvironmentLevel ¶
func GetEnvironmentLevel(env EnvironmentType) int
GetEnvironmentLevel 获取环境级别(用于比较环境的重要程度) 数字越小表示环境级别越高(生产环境最高)
func GetMetadataFromContext ¶
GetMetadataFromContext 从上下文中获取元数据
func IsAnyOf ¶
func IsAnyOf(envs ...EnvironmentType) bool
IsAnyOf 判断当前环境是否为指定环境类型中的任意一种 envs: 要检查的环境类型列表
func IsEnvironment ¶
func IsEnvironment(env EnvironmentType) bool
IsEnvironment 通用环境判断函数 env: 要检查的环境类型
func ListAllEnvPrefixes ¶
func ListAllEnvPrefixes() map[EnvironmentType][]string
ListAllEnvPrefixes 列出所有已注册的环境前缀
func MustGetConfigAs ¶
func MustGetConfigAs[T any](icm *IntegratedConfigManager) *T
MustGetConfigAs 必须成功获取指定类型的配置
func RegisterEnvPrefixes ¶
func RegisterEnvPrefixes(env EnvironmentType, prefixes ...string)
RegisterEnvPrefixes 注册自定义环境前缀(包级别便捷函数) 内部调用 GetGlobalEnvManager().RegisterEnvironment(),保持逻辑统一 示例:
func init() {
goconfig.RegisterEnvPrefixes("custom", "custom", "my-env", "myenv")
}
func SetContextKey ¶
func SetContextKey(options *ContextKeyOptions)
SetContextKey 设置上下文键 options: 指定的上下文键选项,如果为 nil,将使用默认值
func SetCurrentEnvironment ¶
func SetCurrentEnvironment(env EnvironmentType)
SetCurrentEnvironment 设置当前环境类型(便捷函数)
func SetGlobalBuilderFactory ¶
func SetGlobalBuilderFactory(factory *BuilderFactory)
SetGlobalBuilderFactory 设置全局构建器工厂
func UnmarshalWithFlexibleNaming ¶
UnmarshalWithFlexibleNaming 使用灵活的命名匹配策略反序列化配置 支持的转换场景: 1. 直接匹配(大小写敏感) 2. 大小写不敏感匹配 3. kebab-case (service-name) -> snake_case (service_name) 4. camelCase (serviceName) -> snake_case (service_name) 5. PascalCase (ServiceName) -> snake_case (service_name)
参数:
v: Viper 实例 target: 目标配置结构体指针
返回:
error: 反序列化错误
func UnmarshalWithKebabToSnake ¶
UnmarshalWithKebabToSnake 专门用于 kebab-case 到 snake_case 的转换 这是 UnmarshalWithFlexibleNaming 的简化版本,主要用于 YAML 配置
参数:
v: Viper 实例 target: 目标配置结构体指针
返回:
error: 反序列化错误
Types ¶
type BuilderFactory ¶
type BuilderFactory struct {
// contains filtered or unexported fields
}
BuilderFactory 构建器工厂
func GetGlobalBuilderFactory ¶
func GetGlobalBuilderFactory() *BuilderFactory
GetGlobalBuilderFactory 获取全局构建器工厂
func (*BuilderFactory) SetDefaults ¶
func (f *BuilderFactory) SetDefaults(options ConfigBuilderOptions) *BuilderFactory
SetDefaults 设置默认选项
type CallbackEvent ¶
type CallbackEvent struct {
Type CallbackType `json:"type"` // 事件类型
Timestamp time.Time `json:"timestamp"` // 事件时间
Source string `json:"source"` // 事件源(文件路径、环境变量名等)
OldValue interface{} `json:"old_value"` // 旧值
NewValue interface{} `json:"new_value"` // 新值
Environment EnvironmentType `json:"environment"` // 当前环境
Error error `json:"error"` // 错误信息(仅错误回调)
Metadata map[string]interface{} `json:"metadata"` // 附加元数据
ConfigPath string `json:"config_path"` // 配置文件路径
Duration time.Duration `json:"duration"` // 事件处理耗时
}
CallbackEvent 回调事件结构
func CreateErrorEvent ¶
func CreateErrorEvent(source string, err error) CallbackEvent
CreateErrorEvent 创建错误事件的辅助函数
func CreateEvent ¶
func CreateEvent(eventType CallbackType, source string, oldValue, newValue interface{}) CallbackEvent
CreateEvent 创建回调事件的辅助函数
func (*CallbackEvent) GetMetadata ¶
func (e *CallbackEvent) GetMetadata(key string) (interface{}, bool)
GetMetadata 获取事件元数据
func (*CallbackEvent) WithMetadata ¶
func (e *CallbackEvent) WithMetadata(key string, value interface{}) *CallbackEvent
WithMetadata 为事件添加元数据
type CallbackFunc ¶
type CallbackFunc func(ctx context.Context, event CallbackEvent) error
CallbackFunc 回调函数类型
type CallbackManager ¶
type CallbackManager interface {
// RegisterCallback 注册回调函数
RegisterCallback(callback CallbackFunc, options CallbackOptions) error
// UnregisterCallback 注销回调函数
UnregisterCallback(id string) error
// TriggerCallbacks 触发回调函数
TriggerCallbacks(ctx context.Context, event CallbackEvent) error
// ListCallbacks 列出所有已注册的回调
ListCallbacks() []string
// ClearCallbacks 清空所有回调
ClearCallbacks()
// HasCallback 检查是否存在指定ID的回调
HasCallback(id string) bool
}
CallbackManager 回调管理器接口 提供统一的回调注册、注销和执行机制
type CallbackOptions ¶
type CallbackOptions struct {
ID string // 回调的唯一标识符
Types []CallbackType // 监听的事件类型
Priority int // 优先级(越小越优先)
Async bool // 是否异步执行
Timeout time.Duration // 超时时间
Retry int // 重试次数
Filter func(CallbackEvent) bool // 事件过滤器
}
CallbackOptions 回调选项配置
func DefaultCallbackOptions ¶
func DefaultCallbackOptions() CallbackOptions
DefaultCallbackOptions 默认回调选项
type CallbackType ¶
type CallbackType string
CallbackType 回调类型枚举
const ( CallbackTypeConfigChanged CallbackType = "config_changed" // 配置变更 CallbackTypeReloaded CallbackType = "reloaded" // 重新加载完成 CallbackTypeError CallbackType = "error" // 错误事件 CallbackTypeStarted CallbackType = "started" // 启动事件 CallbackTypeStopped CallbackType = "stopped" // 停止事件 CallbackTypeEnvironment CallbackType = "environment" // 环境变更 CallbackTypeValidation CallbackType = "validation" // 配置验证 CallbackTypeFileChanged CallbackType = "file_changed" // 文件变更 CallbackTypeEnvVarChanged CallbackType = "envvar_changed" // 环境变量变更 )
type CommonCallbackManager ¶
type CommonCallbackManager struct {
// contains filtered or unexported fields
}
CommonCallbackManager 通用回调管理器实现
func (*CommonCallbackManager) ClearCallbacks ¶
func (cm *CommonCallbackManager) ClearCallbacks()
ClearCallbacks 清空所有回调
func (*CommonCallbackManager) GetCallbackCount ¶
func (cm *CommonCallbackManager) GetCallbackCount() int
GetCallbackCount 获取回调总数
func (*CommonCallbackManager) GetCallbackInfo ¶
func (cm *CommonCallbackManager) GetCallbackInfo(id string) (CallbackOptions, bool)
GetCallbackInfo 获取回调信息(用于调试)
func (*CommonCallbackManager) HasCallback ¶
func (cm *CommonCallbackManager) HasCallback(id string) bool
HasCallback 检查是否存在指定ID的回调
func (*CommonCallbackManager) ListCallbacks ¶
func (cm *CommonCallbackManager) ListCallbacks() []string
ListCallbacks 列出所有已注册的回调
func (*CommonCallbackManager) RegisterCallback ¶
func (cm *CommonCallbackManager) RegisterCallback(callback CallbackFunc, options CallbackOptions) error
RegisterCallback 注册回调函数
func (*CommonCallbackManager) TriggerCallbacks ¶
func (cm *CommonCallbackManager) TriggerCallbacks(ctx context.Context, event CallbackEvent) error
TriggerCallbacks 触发回调函数
func (*CommonCallbackManager) UnregisterCallback ¶
func (cm *CommonCallbackManager) UnregisterCallback(id string) error
UnregisterCallback 注销回调函数
type ConfigBuilder ¶
type ConfigBuilder[T any] interface { // WithConfigPath 设置配置文件路径 WithConfigPath(path string) ConfigBuilder[T] // WithSearchPath 设置配置文件搜索路径 WithSearchPath(path string) ConfigBuilder[T] // WithEnvironment 设置运行环境 WithEnvironment(env EnvironmentType) ConfigBuilder[T] // WithPrefix 设置配置文件名前缀 WithPrefix(prefix string) ConfigBuilder[T] // WithPattern 设置文件匹配模式 WithPattern(pattern string) ConfigBuilder[T] // WithHotReload 启用配置热重载功能 WithHotReload(config *HotReloadConfig) ConfigBuilder[T] // WithContext 设置上下文配置选项 WithContext(options *ContextKeyOptions) ConfigBuilder[T] // Build 构建配置管理器 Build() (*IntegratedConfigManager, error) // BuildAndStart 构建并启动配置管理器 BuildAndStart(ctx ...context.Context) (*IntegratedConfigManager, error) // MustBuildAndStart 构建并启动配置管理器(失败时panic) MustBuildAndStart(ctx ...context.Context) *IntegratedConfigManager }
ConfigBuilder 配置构建器接口
func NewConfigBuilder ¶
func NewConfigBuilder[T any](config *T) ConfigBuilder[T]
NewConfigBuilder 创建新的配置构建器
type ConfigBuilderOptions ¶
type ConfigBuilderOptions struct {
ConfigPath string `json:"config_path"` // 配置文件路径
SearchPath string `json:"search_path"` // 搜索路径
Environment EnvironmentType `json:"environment"` // 环境类型
ConfigPrefix string `json:"config_prefix"` // 配置前缀
Pattern string `json:"pattern"` // 匹配模式
HotReloadConfig *HotReloadConfig `json:"hot_reload_config"` // 热重载配置
ContextOptions *ContextKeyOptions `json:"context_options"` // 上下文选项
}
ConfigBuilderOptions 配置构建器选项
type ConfigContext ¶
type ConfigContext struct {
Environment EnvironmentType `json:"environment"` // 当前环境
Config any `json:"config"` // 配置对象
Metadata map[string]any `json:"metadata"` // 元数据
CreatedAt time.Time `json:"created_at"` // 创建时间
UpdatedAt time.Time `json:"updated_at"` // 更新时间
}
ConfigContext 配置上下文
type ConfigDiscovery ¶
type ConfigDiscovery struct {
// 支持的配置文件扩展名,按优先级排序
SupportedExtensions []string
// 默认配置文件名(不含扩展名)
DefaultNames []string
// 环境特定的配置文件前缀
EnvPrefixes map[EnvironmentType][]string
}
ConfigDiscovery 配置文件发现器
func GetGlobalConfigDiscovery ¶
func GetGlobalConfigDiscovery() *ConfigDiscovery
GetGlobalConfigDiscovery 获取全局配置发现器
func (*ConfigDiscovery) DiscoverConfigFiles ¶
func (cd *ConfigDiscovery) DiscoverConfigFiles(searchPath string, env EnvironmentType) ([]*ConfigFileInfo, error)
DiscoverConfigFiles 在指定目录中发现配置文件
func (*ConfigDiscovery) FindBestConfigFile ¶
func (cd *ConfigDiscovery) FindBestConfigFile(searchPath string, env EnvironmentType) (*ConfigFileInfo, error)
FindBestConfigFile 找到最合适的配置文件
func (*ConfigDiscovery) FindConfigFileByPattern ¶
func (cd *ConfigDiscovery) FindConfigFileByPattern(searchPath, pattern string, env EnvironmentType) ([]*ConfigFileInfo, error)
FindConfigFileByPattern 根据模式查找配置文件
func (*ConfigDiscovery) ScanDirectory ¶
func (cd *ConfigDiscovery) ScanDirectory(searchPath string) ([]*ConfigFileInfo, error)
ScanDirectory 扫描目录中的所有配置文件
type ConfigFileInfo ¶
type ConfigFileInfo struct {
Path string `json:"path"` // 文件完整路径
Name string `json:"name"` // 文件名(含扩展名)
BaseName string `json:"base_name"` // 文件名(不含扩展名)
Extension string `json:"extension"` // 文件扩展名
Environment EnvironmentType `json:"environment"` // 环境类型
Priority int `json:"priority"` // 优先级(数字越小优先级越高)
Exists bool `json:"exists"` // 文件是否存在
}
ConfigFileInfo 配置文件信息
func DiscoverConfig ¶
func DiscoverConfig(searchPath string, env EnvironmentType) ([]*ConfigFileInfo, error)
DiscoverConfig 发现配置文件(便利函数)
func FindBestConfig ¶
func FindBestConfig(searchPath string, env EnvironmentType) (*ConfigFileInfo, error)
FindBestConfig 找到最佳配置文件(便利函数)
func ScanAndDisplayConfigs ¶
func ScanAndDisplayConfigs(searchPath string, env EnvironmentType) ([]*ConfigFileInfo, error)
ScanAndDisplayConfigs 扫描并显示可用的配置文件
type ConfigFormatter ¶
type ConfigFormatter struct {
// contains filtered or unexported fields
}
ConfigFormatter 配置格式化器
func NewConfigFormatter ¶
func NewConfigFormatter(lg ...*logger.Logger) *ConfigFormatter
NewConfigFormatter 创建配置格式化器
func (*ConfigFormatter) LogConfigChanged ¶
func (cf *ConfigFormatter) LogConfigChanged(event CallbackEvent, newConfig any)
LogConfigChanged 记录配置变更 - 主要入口函数
type ContextKey ¶
type ContextKey string
定义上下文键类型
const ( ContextKeyEnvironment ContextKey = "go_config_environment" ContextKeyConfig ContextKey = "go_config_configuration" ContextKeyHotReloader ContextKey = "go_config_hot_reloader" ContextKeyMetadata ContextKey = "go_config_metadata" )
上下文键定义
type ContextKeyHelper ¶
type ContextKeyHelper struct{}
ContextKeyHelper 上下文键辅助工具
func (ContextKeyHelper) IsEnvironment ¶
func (ContextKeyHelper) IsEnvironment(ctx context.Context, env EnvironmentType) bool
IsEnvironment 检查上下文中的环境是否匹配
func (ContextKeyHelper) MustGetConfig ¶
func (ContextKeyHelper) MustGetConfig(ctx context.Context) any
MustGetConfig 从上下文中获取配置,如果不存在则panic
func (ContextKeyHelper) MustGetEnvironment ¶
func (ContextKeyHelper) MustGetEnvironment(ctx context.Context) EnvironmentType
MustGetEnvironment 从上下文中获取环境,如果不存在则panic
func (ContextKeyHelper) NewConfigContext ¶
func (ContextKeyHelper) NewConfigContext() context.Context
NewConfigContext 创建新的配置上下文
func (ContextKeyHelper) NewContextWithDeadline ¶
func (ContextKeyHelper) NewContextWithDeadline(deadline time.Time) (context.Context, context.CancelFunc)
NewContextWithDeadline 创建带截止时间的配置上下文
func (ContextKeyHelper) NewContextWithTimeout ¶
func (ContextKeyHelper) NewContextWithTimeout(timeout time.Duration) (context.Context, context.CancelFunc)
NewContextWithTimeout 创建带超时的配置上下文
type ContextKeyOptions ¶
type ContextKeyOptions struct {
Key ContextKey
Value EnvironmentType
}
ContextKeyOptions 定义上下文键的选项
type ContextManager ¶
type ContextManager struct {
// contains filtered or unexported fields
}
ContextManager 上下文管理器
func GetGlobalContextManager ¶
func GetGlobalContextManager() *ContextManager
GetGlobalContextManager 获取全局上下文管理器
func InitializeContextManager ¶
func InitializeContextManager(env *Environment, reloader HotReloader) *ContextManager
InitializeContextManager 初始化全局上下文管理器
func NewContextManager ¶
func NewContextManager(env *Environment, reloader HotReloader) *ContextManager
NewContextManager 创建新的上下文管理器
func (*ContextManager) GetConfigContext ¶
func (cm *ContextManager) GetConfigContext() *ConfigContext
GetConfigContext 获取完整的配置上下文
func (*ContextManager) GetCurrentConfig ¶
func (cm *ContextManager) GetCurrentConfig() any
GetCurrentConfig 获取当前配置
func (*ContextManager) GetCurrentEnvironment ¶
func (cm *ContextManager) GetCurrentEnvironment() EnvironmentType
GetCurrentEnvironment 获取当前环境
func (*ContextManager) GetMetadata ¶
func (cm *ContextManager) GetMetadata(key string) (any, bool)
GetMetadata 获取元数据
func (*ContextManager) SetMetadata ¶
func (cm *ContextManager) SetMetadata(key string, value any)
SetMetadata 设置元数据
func (*ContextManager) UpdateConfig ¶
func (cm *ContextManager) UpdateConfig(config any)
UpdateConfig 更新配置
func (*ContextManager) WithConfig ¶
func (cm *ContextManager) WithConfig(ctx context.Context) context.Context
WithConfig 将配置信息添加到上下文中
type Environment ¶
type Environment struct {
CheckFrequency time.Duration // 检查频率
Value EnvironmentType // 当前环境值
// contains filtered or unexported fields
}
环境配置
func DefaultEnvironment ¶
func DefaultEnvironment() Environment
DefaultEnvironment 返回默认的 Environment 值
func GetGlobalEnvironment ¶
func GetGlobalEnvironment() *Environment
GetGlobalEnvironment 获取全局环境实例,如果未初始化则自动初始化
func NewEnvironment ¶
func NewEnvironment() *Environment
NewEnvironment 创建一个新的 Environment 实例,并将环境变量写入上下文
func (*Environment) CheckAndUpdateEnv ¶
func (e *Environment) CheckAndUpdateEnv()
CheckAndUpdateEnv 检查并更新环境变量
func (*Environment) ClearCallbacks ¶
func (e *Environment) ClearCallbacks()
ClearCallbacks 清除所有环境变更回调
func (*Environment) ClearEnv ¶
func (e *Environment) ClearEnv()
ClearEnv 清除环境变量并等待锁 上下文键在取 e.mu 之前先读出来:与 SetEnvironment 同一个理由, contextKeyMutex 嵌在 e.mu 里会造成锁顺序倒置
[EN] The context key is read before acquiring e.mu, for the same reason as in SetEnvironment: nesting contextKeyMutex inside e.mu inverts the lock order
func (*Environment) ListCallbacks ¶
func (e *Environment) ListCallbacks() []string
ListCallbacks 列出所有环境变更回调
func (*Environment) RegisterCallback ¶
func (e *Environment) RegisterCallback(id string, callback EnvironmentCallback, priority int, async bool) error
RegisterCallback 注册环境变更回调
func (*Environment) RegisterEnvironment ¶
func (e *Environment) RegisterEnvironment(env EnvironmentType) error
RegisterEnvironment 注册新的环境类型
func (*Environment) SetCheckFrequency ¶
func (e *Environment) SetCheckFrequency(frequency time.Duration) *Environment
SetCheckFrequency 设置检查频率并支持链式调用
func (*Environment) SetEnvironment ¶
func (e *Environment) SetEnvironment(value EnvironmentType) *Environment
SetEnvironment 设置环境变量
func (*Environment) UnregisterCallback ¶
func (e *Environment) UnregisterCallback(id string) error
UnregisterCallback 注销环境变更回调
type EnvironmentCallback ¶
type EnvironmentCallback func(oldEnv, newEnv EnvironmentType) error
EnvironmentCallback 环境变更回调函数类型
type EnvironmentCallbackInfo ¶
type EnvironmentCallbackInfo struct {
ID string // 回调唯一标识
Callback EnvironmentCallback // 回调函数
Priority int // 优先级(数字越小优先级越高)
Async bool // 是否异步执行
}
EnvironmentCallbackInfo 环境回调信息
type EnvironmentInterface ¶
type EnvironmentInterface interface {
SetEnvironment(value EnvironmentType) *Environment
CheckAndUpdateEnv()
SetCheckFrequency(frequency time.Duration) *Environment
StopWatch()
ClearEnv()
RegisterCallback(id string, callback EnvironmentCallback, priority int, async bool) error
UnregisterCallback(id string) error
ListCallbacks() []string
ClearCallbacks()
}
定义一个内部接口,隐藏实现细节
type EnvironmentManager ¶
type EnvironmentManager struct {
// contains filtered or unexported fields
}
EnvironmentManager 环境管理器
func GetGlobalEnvManager ¶
func GetGlobalEnvManager() *EnvironmentManager
GetGlobalEnvManager 获取全局环境管理器 可用于注册自定义环境类型及其别名
func NewEnvironmentManager ¶
func NewEnvironmentManager() *EnvironmentManager
NewEnvironmentManager 创建新的环境管理器
func (*EnvironmentManager) DetectEnvironmentType ¶
func (em *EnvironmentManager) DetectEnvironmentType(envString string) (EnvironmentType, bool)
DetectEnvironmentType 检测环境字符串对应的环境类型
func (*EnvironmentManager) IsEnvironment ¶
func (em *EnvironmentManager) IsEnvironment(envString string, envType EnvironmentType) bool
IsEnvironment 检查给定的环境字符串是否属于指定的环境类型
func (*EnvironmentManager) IsRegistered ¶
func (em *EnvironmentManager) IsRegistered(envType EnvironmentType) bool
IsRegistered 检查环境类型是否已注册
func (*EnvironmentManager) RegisterEnvironment ¶
func (em *EnvironmentManager) RegisterEnvironment(envType EnvironmentType, aliases ...string)
RegisterEnvironment 注册环境类型及其别名 同时会更新 DefaultEnvPrefixes,保持环境别名和配置文件前缀的一致性
type EnvironmentType ¶
type EnvironmentType string
EnvironmentType 定义环境类型
const ( // 标准环境 EnvDevelopment EnvironmentType = "development" // 开发环境 EnvTest EnvironmentType = "test" // 测试环境 EnvStaging EnvironmentType = "staging" // 预发布环境 EnvUAT EnvironmentType = "uat" // 用户验收测试环境 EnvProduction EnvironmentType = "production" // 生产环境 EnvLocal EnvironmentType = "local" // 本地环境 EnvDebug EnvironmentType = "debug" // 调试环境 EnvDemo EnvironmentType = "demo" // 演示环境 EnvIntegration EnvironmentType = "integration" // 集成环境 // 亚洲国家/地区 EnvChina EnvironmentType = "china" // 中国 EnvJapan EnvironmentType = "japan" // 日本 EnvKorea EnvironmentType = "korea" // 韩国 EnvIndia EnvironmentType = "india" // 印度 EnvSingapore EnvironmentType = "singapore" // 新加坡 EnvThailand EnvironmentType = "thailand" // 泰国 EnvVietnam EnvironmentType = "vietnam" // 越南 EnvMalaysia EnvironmentType = "malaysia" // 马来西亚 EnvIndonesia EnvironmentType = "indonesia" // 印度尼西亚 EnvPhilippines EnvironmentType = "philippines" // 菲律宾 EnvMyanmar EnvironmentType = "myanmar" // 缅甸 EnvLaos EnvironmentType = "laos" // 老挝 EnvCambodia EnvironmentType = "cambodia" // 柬埔寨 EnvPakistan EnvironmentType = "pakistan" // 巴基斯坦 EnvBangladesh EnvironmentType = "bangladesh" // 孟加拉国 EnvSriLanka EnvironmentType = "srilanka" // 斯里兰卡 EnvNepal EnvironmentType = "nepal" // 尼泊尔 EnvHongKong EnvironmentType = "hongkong" // 香港 EnvTaiwan EnvironmentType = "taiwan" // 台湾 EnvMacao EnvironmentType = "macao" // 澳门 // 欧洲国家 EnvUK EnvironmentType = "uk" // 英国 EnvGermany EnvironmentType = "germany" // 德国 EnvFrance EnvironmentType = "france" // 法国 EnvItaly EnvironmentType = "italy" // 意大利 EnvSpain EnvironmentType = "spain" // 西班牙 EnvNetherlands EnvironmentType = "netherlands" // 荷兰 EnvBelgium EnvironmentType = "belgium" // 比利时 EnvSwitzerland EnvironmentType = "switzerland" // 瑞士 EnvAustria EnvironmentType = "austria" // 奥地利 EnvSweden EnvironmentType = "sweden" // 瑞典 EnvNorway EnvironmentType = "norway" // 挪威 EnvDenmark EnvironmentType = "denmark" // 丹麦 EnvFinland EnvironmentType = "finland" // 芬兰 EnvPoland EnvironmentType = "poland" // 波兰 EnvRussia EnvironmentType = "russia" // 俄罗斯 EnvTurkey EnvironmentType = "turkey" // 土耳其 // 北美洲国家 EnvUSA EnvironmentType = "usa" // 美国 EnvCanada EnvironmentType = "canada" // 加拿大 EnvMexico EnvironmentType = "mexico" // 墨西哥 // 南美洲国家 EnvBrazil EnvironmentType = "brazil" // 巴西 EnvArgentina EnvironmentType = "argentina" // 阿根廷 EnvChile EnvironmentType = "chile" // 智利 EnvColombia EnvironmentType = "colombia" // 哥伦比亚 EnvPeru EnvironmentType = "peru" // 秘鲁 // 大洋洲国家 EnvAustralia EnvironmentType = "australia" // 澳大利亚 EnvNewZealand EnvironmentType = "newzealand" // 新西兰 // 非洲国家 EnvSouthAfrica EnvironmentType = "southafrica" // 南非 EnvEgypt EnvironmentType = "egypt" // 埃及 EnvNigeria EnvironmentType = "nigeria" // 尼日利亚 EnvKenya EnvironmentType = "kenya" // 肯尼亚 // 中东国家 EnvUAE EnvironmentType = "uae" // 阿联酋 EnvSaudiArabia EnvironmentType = "saudiarabia" // 沙特阿拉伯 EnvIsrael EnvironmentType = "israel" // 以色列 EnvQatar EnvironmentType = "qatar" // 卡塔尔 // 向后兼容的别名 Dev = EnvDevelopment Sit = EnvTest Fat = EnvStaging Uat = EnvUAT Prod = EnvProduction DefaultEnv EnvironmentType = EnvDevelopment )
定义有效的环境常量
func GetCurrentEnvironment ¶
func GetCurrentEnvironment() EnvironmentType
GetCurrentEnvironment 获取当前环境类型(便捷函数)
func GetEnvironment ¶
func GetEnvironment() EnvironmentType
GetEnvironment 从上下文中获取环境变量并解析为正确的环境类型 上下文键经 GetContextKey 一次性取出再复用,不直接读 envContextKey: SetContextKey 是加锁写的,这里裸读会与它构成数据竞争 hotReloadManager 的事件循环在后台 goroutine 里调本函数,调用方只要在运行期 调过一次 SetContextKey 就会触发,-race 下已实测到
[EN] The context key is read once through GetContextKey rather than touching envContextKey directly: SetContextKey writes it under a mutex, so an unguarded read here races with it hotReloadManager's event loop calls this from a background goroutine, so any runtime call to SetContextKey trips it, as observed under -race
func GetEnvironmentFromContext ¶
func GetEnvironmentFromContext(ctx context.Context) (EnvironmentType, bool)
GetEnvironmentFromContext 从上下文中获取环境信息
type HotReloadConfig ¶
type HotReloadConfig struct {
Enabled bool `yaml:"enabled" json:"enabled"` // 是否启用热更新
WatchInterval time.Duration `yaml:"watch_interval" json:"watch_interval"` // 监控间隔
DebounceDelay time.Duration `yaml:"debounce_delay" json:"debounce_delay"` // 防抖延迟
MaxRetries int `yaml:"max_retries" json:"max_retries"` // 最大重试次数
CallbackTimeout time.Duration `yaml:"callback_timeout" json:"callback_timeout"` // 回调超时
EnableEnvWatch bool `yaml:"enable_env_watch" json:"enable_env_watch"` // 是否监控环境变量
}
HotReloadConfig 热更新配置
func DefaultHotReloadConfig ¶
func DefaultHotReloadConfig() *HotReloadConfig
DefaultHotReloadConfig 默认热更新配置
type HotReloader ¶
type HotReloader interface {
CallbackManager
// Start 启动热更新监控
Start(ctx context.Context) error
// Stop 停止热更新监控
Stop() error
// Reload 手动重新加载配置
Reload(ctx context.Context) error
// IsRunning 检查是否正在运行
IsRunning() bool
// GetConfig 获取当前配置
GetConfig() any
// SetConfig 设置配置
SetConfig(config any) error
}
HotReloader 热更新器接口
func GetHotReloaderFromContext ¶
func GetHotReloaderFromContext(ctx context.Context) (HotReloader, bool)
GetHotReloaderFromContext 从上下文中获取热更新器
func NewHotReloader ¶
func NewHotReloader(config interface{}, viper *viper.Viper, configPath string, options *HotReloadConfig) (HotReloader, error)
NewHotReloader 创建新的热更新器
type IntegratedConfigManager ¶
type IntegratedConfigManager struct {
// contains filtered or unexported fields
}
IntegratedConfigManager 集成配置管理器 统一管理配置文件、环境变量、热重载和上下文的核心组件
func CreateIntegratedManager ¶
func CreateIntegratedManager(config interface{}, configPath string, env EnvironmentType) (*IntegratedConfigManager, error)
CreateIntegratedManager 创建集成配置管理器的便捷函数
func NewIntegratedConfigManager ¶
func NewIntegratedConfigManager(config interface{}, options *IntegratedConfigOptions) (*IntegratedConfigManager, error)
NewIntegratedConfigManager 创建集成配置管理器
func QuickBuild ¶
func QuickBuild[T any](config *T, configPath string, env EnvironmentType) (*IntegratedConfigManager, error)
QuickBuild 快速构建配置管理器的便捷函数
func QuickStart ¶
func QuickStart[T any](config *T, configPath string, env EnvironmentType) (*IntegratedConfigManager, error)
QuickStart 快速启动配置管理器的便捷函数
func (*IntegratedConfigManager) GetConfig ¶
func (icm *IntegratedConfigManager) GetConfig() interface{}
GetConfig 获取当前配置
func (*IntegratedConfigManager) GetConfigMetadata ¶
func (icm *IntegratedConfigManager) GetConfigMetadata() map[string]interface{}
GetConfigMetadata 获取配置元数据
func (*IntegratedConfigManager) GetConfigPath ¶
func (icm *IntegratedConfigManager) GetConfigPath() string
GetConfigPath 获取配置文件路径
func (*IntegratedConfigManager) GetContextManager ¶
func (icm *IntegratedConfigManager) GetContextManager() *ContextManager
GetContextManager 获取上下文管理器
func (*IntegratedConfigManager) GetEnvironment ¶
func (icm *IntegratedConfigManager) GetEnvironment() EnvironmentType
GetEnvironment 获取当前环境
func (*IntegratedConfigManager) GetEnvironmentManager ¶
func (icm *IntegratedConfigManager) GetEnvironmentManager() *Environment
GetEnvironmentManager 获取环境管理器
func (*IntegratedConfigManager) GetHotReloader ¶
func (icm *IntegratedConfigManager) GetHotReloader() HotReloader
GetHotReloader 获取热重载器
func (*IntegratedConfigManager) GetViper ¶
func (icm *IntegratedConfigManager) GetViper() *viper.Viper
GetViper 获取Viper实例
func (*IntegratedConfigManager) IsRunning ¶
func (icm *IntegratedConfigManager) IsRunning() bool
IsRunning 检查管理器是否正在运行
func (*IntegratedConfigManager) MustStart ¶
func (icm *IntegratedConfigManager) MustStart(ctx context.Context)
MustStart 必须成功启动配置管理器
func (*IntegratedConfigManager) RegisterConfigCallback ¶
func (icm *IntegratedConfigManager) RegisterConfigCallback(callback CallbackFunc, options CallbackOptions) error
RegisterConfigCallback 注册配置变更回调
func (*IntegratedConfigManager) RegisterEnvironmentCallback ¶
func (icm *IntegratedConfigManager) RegisterEnvironmentCallback(id string, callback EnvironmentCallback, priority int, async bool) error
RegisterEnvironmentCallback 注册环境变更回调
func (*IntegratedConfigManager) SetEnvironment ¶
func (icm *IntegratedConfigManager) SetEnvironment(env EnvironmentType) error
SetEnvironment 设置应用环境
func (*IntegratedConfigManager) Start ¶
func (icm *IntegratedConfigManager) Start(ctx context.Context) error
Start 启动配置管理器
func (*IntegratedConfigManager) Stop ¶
func (icm *IntegratedConfigManager) Stop() error
Stop 停止配置管理器
func (*IntegratedConfigManager) UnregisterConfigCallback ¶
func (icm *IntegratedConfigManager) UnregisterConfigCallback(id string) error
UnregisterConfigCallback 取消配置变更回调
func (*IntegratedConfigManager) UnregisterEnvironmentCallback ¶
func (icm *IntegratedConfigManager) UnregisterEnvironmentCallback(id string) error
UnregisterEnvironmentCallback 取消环境变更回调
func (*IntegratedConfigManager) ValidateConfig ¶
func (icm *IntegratedConfigManager) ValidateConfig() error
ValidateConfig 验证配置有效性
func (*IntegratedConfigManager) WithContext ¶
func (icm *IntegratedConfigManager) WithContext(ctx context.Context) context.Context
WithContext 将配置信息注入到上下文中
type IntegratedConfigOptions ¶
type IntegratedConfigOptions struct {
ConfigPath string // 配置文件路径
Environment EnvironmentType // 初始环境
HotReloadConfig *HotReloadConfig // 热更新配置
ContextOptions *ContextKeyOptions // 上下文选项
}
IntegratedConfigOptions 集成配置管理器选项
func DefaultIntegratedConfigOptions ¶
func DefaultIntegratedConfigOptions() *IntegratedConfigOptions
DefaultIntegratedConfigOptions 默认集成配置管理器选项
type ManagerBuilder ¶
type ManagerBuilder[T any] struct { // contains filtered or unexported fields }
ManagerBuilder 配置管理器构建器实现
func (*ManagerBuilder[T]) Build ¶
func (b *ManagerBuilder[T]) Build() (*IntegratedConfigManager, error)
Build 构建配置管理器
func (*ManagerBuilder[T]) BuildAndStart ¶
func (b *ManagerBuilder[T]) BuildAndStart(ctx ...context.Context) (*IntegratedConfigManager, error)
BuildAndStart 构建并启动配置管理器
func (*ManagerBuilder[T]) MustBuildAndStart ¶
func (b *ManagerBuilder[T]) MustBuildAndStart(ctx ...context.Context) *IntegratedConfigManager
MustBuildAndStart 构建并启动配置管理器
func (*ManagerBuilder[T]) WithConfigPath ¶
func (b *ManagerBuilder[T]) WithConfigPath(path string) ConfigBuilder[T]
WithConfigPath 设置配置文件路径
func (*ManagerBuilder[T]) WithContext ¶
func (b *ManagerBuilder[T]) WithContext(options *ContextKeyOptions) ConfigBuilder[T]
WithContext 设置上下文配置选项
func (*ManagerBuilder[T]) WithEnvironment ¶
func (b *ManagerBuilder[T]) WithEnvironment(env EnvironmentType) ConfigBuilder[T]
WithEnvironment 设置运行环境
func (*ManagerBuilder[T]) WithHotReload ¶
func (b *ManagerBuilder[T]) WithHotReload(config *HotReloadConfig) ConfigBuilder[T]
WithHotReload 启用配置热重载功能
func (*ManagerBuilder[T]) WithPattern ¶
func (b *ManagerBuilder[T]) WithPattern(pattern string) ConfigBuilder[T]
WithPattern 设置文件匹配模式
func (*ManagerBuilder[T]) WithPrefix ¶
func (b *ManagerBuilder[T]) WithPrefix(prefix string) ConfigBuilder[T]
WithPrefix 设置配置文件名前缀
func (*ManagerBuilder[T]) WithSearchPath ¶
func (b *ManagerBuilder[T]) WithSearchPath(path string) ConfigBuilder[T]
WithSearchPath 设置配置文件搜索路径
type ModuleConfig ¶
type ModuleConfig struct {
Name string // 模块名称
PackageName string // 包名
DefaultFunc func() interface{} // 默认配置函数
OutputSubDir string // 输出子目录
SourceFile string // 源文件路径
StructName string // 结构体名称
Description string // 模块描述
Enabled bool // 是否启用此模块生成
LastGenerated time.Time // 最后生成时间
}
ModuleConfig 模块配置信息
type SmartConfigGenerator ¶
type SmartConfigGenerator struct {
BaseOutputDir string // 基础输出目录
Logger *gologger.Logger // 日志记录器
ModuleRegistry map[string]ModuleConfig // 模块注册表
ForceRegenerate bool // 是否强制重新生成
IncludeComments bool // 是否包含注释
GenerateJSON bool // 是否生成JSON
GenerateYAML bool // 是否生成YAML
BackupExisting bool // 是否备份现有文件
OverwriteExisting bool // 是否覆盖现有文件
// contains filtered or unexported fields
}
SmartConfigGenerator 智能配置生成器
func NewSmartConfigGenerator ¶
func NewSmartConfigGenerator(baseOutputDir string) *SmartConfigGenerator
NewSmartConfigGenerator 创建新的智能配置生成器
func (*SmartConfigGenerator) CleanupBackupFiles ¶
func (sg *SmartConfigGenerator) CleanupBackupFiles(maxAge time.Duration) error
CleanupBackupFiles 清理备份文件
func (*SmartConfigGenerator) DisableModule ¶
func (sg *SmartConfigGenerator) DisableModule(moduleName string) error
DisableModule 禁用指定模块
func (*SmartConfigGenerator) EnableModule ¶
func (sg *SmartConfigGenerator) EnableModule(moduleName string) error
EnableModule 启用指定模块
func (*SmartConfigGenerator) EnableOnlyModules ¶
func (sg *SmartConfigGenerator) EnableOnlyModules(moduleNames ...string) error
EnableOnlyModules 只启用指定的模块,其他模块全部禁用
func (*SmartConfigGenerator) GenerateAllConfigs ¶
func (sg *SmartConfigGenerator) GenerateAllConfigs() error
GenerateAllConfigs 生成所有模块的配置文件
func (*SmartConfigGenerator) GenerateModuleConfig ¶
func (sg *SmartConfigGenerator) GenerateModuleConfig(module ModuleConfig) error
GenerateModuleConfig 生成单个模块的配置文件
func (*SmartConfigGenerator) GenerateModulesByNames ¶
func (sg *SmartConfigGenerator) GenerateModulesByNames(moduleNames ...string) error
GenerateModulesByNames 根据模块名称生成指定模块的配置文件
func (*SmartConfigGenerator) GetEnabledModules ¶
func (sg *SmartConfigGenerator) GetEnabledModules() []string
GetEnabledModules 获取已启用的模块列表
func (*SmartConfigGenerator) GetModuleInfo ¶
func (sg *SmartConfigGenerator) GetModuleInfo(moduleName string) (*ModuleConfig, error)
GetModuleInfo 获取模块详细信息
func (*SmartConfigGenerator) GetModuleList ¶
func (sg *SmartConfigGenerator) GetModuleList() []string
GetModuleList 获取所有注册的模块列表
func (*SmartConfigGenerator) PrintModuleStatus ¶
func (sg *SmartConfigGenerator) PrintModuleStatus()
PrintModuleStatus 打印模块状态
func (*SmartConfigGenerator) UpdateModuleConfig ¶
func (sg *SmartConfigGenerator) UpdateModuleConfig(moduleName string, updates map[string]interface{}) error
UpdateModuleConfig 更新模块配置
func (*SmartConfigGenerator) ValidateAllModules ¶
func (sg *SmartConfigGenerator) ValidateAllModules() error
ValidateAllModules 验证所有模块配置
func (*SmartConfigGenerator) ValidateModuleConfig ¶
func (sg *SmartConfigGenerator) ValidateModuleConfig(moduleName string) error
ValidateModuleConfig 验证模块配置
func (*SmartConfigGenerator) WithBackupExisting ¶
func (sg *SmartConfigGenerator) WithBackupExisting(backup bool) *SmartConfigGenerator
WithBackupExisting 设置是否备份现有文件
func (*SmartConfigGenerator) WithForceRegenerate ¶
func (sg *SmartConfigGenerator) WithForceRegenerate(force bool) *SmartConfigGenerator
WithForceRegenerate 设置是否强制重新生成
func (*SmartConfigGenerator) WithIncludeComments ¶
func (sg *SmartConfigGenerator) WithIncludeComments(include bool) *SmartConfigGenerator
WithIncludeComments 设置是否包含注释
func (*SmartConfigGenerator) WithLogger ¶
func (sg *SmartConfigGenerator) WithLogger(logger *gologger.Logger) *SmartConfigGenerator
WithLogger 设置日志记录器
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
examples
|
|
|
basic
command
|
|
|
builder
command
|
|
|
context
command
|
|
|
discovery
command
|
|
|
environment
command
|
|
|
hot_reload
command
|
|
|
* @Author: kamalyes 501893067@qq.com * @Date: 2023-07-28 00:50:58 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2024-11-07 23:55:15 * @FilePath: \go-config\internal\common.go * @Description: * * Copyright (c) 2024 by kamalyes, All Rights Reserved.
|
* @Author: kamalyes 501893067@qq.com * @Date: 2023-07-28 00:50:58 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2024-11-07 23:55:15 * @FilePath: \go-config\internal\common.go * @Description: * * Copyright (c) 2024 by kamalyes, All Rights Reserved. |
|
pkg
|
|
|
common
* @Author: kamalyes 501893067@qq.com * @Date: 2025-11-12 15:05:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2025-11-12 15:05:00 * @FilePath: \go-config\pkg\common\attribute_source.go * @Description: * * Copyright (c) 2025 by kamalyes, All Rights Reserved.
|
* @Author: kamalyes 501893067@qq.com * @Date: 2025-11-12 15:05:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2025-11-12 15:05:00 * @FilePath: \go-config\pkg\common\attribute_source.go * @Description: * * Copyright (c) 2025 by kamalyes, All Rights Reserved. |
|
database
* @Author: kamalyes 501893067@qq.com * @Date: 2024-11-03 20:55:05 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2026-04-28 11:16:58 * @FilePath: \go-config\pkg\database\cockroachdb.go * @Description: CockroachDB统一配置管理 * * Copyright (c) 2024 by kamalyes, All Rights Reserved.
|
* @Author: kamalyes 501893067@qq.com * @Date: 2024-11-03 20:55:05 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2026-04-28 11:16:58 * @FilePath: \go-config\pkg\database\cockroachdb.go * @Description: CockroachDB统一配置管理 * * Copyright (c) 2024 by kamalyes, All Rights Reserved. |
|
elasticsearch
* @Author: kamalyes 501893067@qq.com * @Date: 2023-07-28 00:50:58 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2024-11-07 23:59:11 * @FilePath: \go-config\pkg\elasticsearch\elasticsearch.go * @Description: * * Copyright (j) 2024 by kamalyes, All Rights Reserved.
|
* @Author: kamalyes 501893067@qq.com * @Date: 2023-07-28 00:50:58 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2024-11-07 23:59:11 * @FilePath: \go-config\pkg\elasticsearch\elasticsearch.go * @Description: * * Copyright (j) 2024 by kamalyes, All Rights Reserved. |
|
kafka
* @Author: kamalyes 501893067@qq.com * @Date: 2023-07-28 00:50:58 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2025-11-15 13:26:00 * @FilePath: \go-config\pkg\kafka\kafka.go * @Description: * * Copyright (j) 2024 by kamalyes, All Rights Reserved.
|
* @Author: kamalyes 501893067@qq.com * @Date: 2023-07-28 00:50:58 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2025-11-15 13:26:00 * @FilePath: \go-config\pkg\kafka\kafka.go * @Description: * * Copyright (j) 2024 by kamalyes, All Rights Reserved. |
|
tsdb
* @Author: kamalyes 501893067@qq.com * @Date: 2026-04-23 00:00:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2026-04-23 19:58:55 * @FilePath: \go-config\pkg\tsdb\clickhouse.go * @Description: ClickHouse数据库配置 * * Copyright (c) 2026 by kamalyes, All Rights Reserved.
|
* @Author: kamalyes 501893067@qq.com * @Date: 2026-04-23 00:00:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2026-04-23 19:58:55 * @FilePath: \go-config\pkg\tsdb\clickhouse.go * @Description: ClickHouse数据库配置 * * Copyright (c) 2026 by kamalyes, All Rights Reserved. |