Skip to content

简介

econfig 是 ee-go 的配置管理模块,负责加载和提供应用配置数据。支持分层配置加载(开发环境读取本地文件,生产环境读取嵌入或外部文件),自动将环境配置合并到默认配置中,底层使用 Viper 作为配置容器。所有配置值以 map[string]any 存储和访问。

导入

go
import "github.com/wallace5303/ee-go/econfig"

API

Init()

说明:初始化配置系统,加载默认和环境配置并合并。加载策略:开发模式下优先从项目目录读取 config.default.jsonconfig.local.json;生产模式下优先从嵌入静态文件系统读取 config.default.jsonconfig.prod.json,嵌入文件不存在时回退到外部文件。如果配置文件不存在,则抛出异常并退出。合并后的配置存储在 Vip 全局变量中。此函数由 eboot.New() 内部调用,用户通常不需要手动调用。

参数:无

返回值:无

示例

go
// 通常由 eboot.New() 自动调用
econfig.Init()

参见Vip


Get(key)

说明:通过键名获取配置值。键名不区分大小写(Viper 功能)。如果键不存在,返回 nil

参数

参数类型必填说明
keystring配置键名,不区分大小写

返回值any — 键对应的配置值,键不存在时返回 nil

示例

go
port := econfig.Get("http.port")
enable := econfig.Get("http.enable")
fmt.Printf("HTTP 端口: %v, 启用: %v\n", port, enable)

GetAll()

说明:返回包含所有配置项的完整 map。

参数:无

返回值map[string]any — 包含所有配置键值对的 map

示例

go
allCfg := econfig.GetAll()
for k, v := range allCfg {
    fmt.Printf("%s = %v\n", k, v)
}

GetLogger()

说明:获取业务日志配置项。对应配置文件中的 logger 键。如果配置项不存在或类型不匹配,则抛出异常并退出。

参数:无

返回值map[string]any — 日志配置 map,包含日志级别、输出路径等设置

示例

go
logCfg := econfig.GetLogger()
logLevel := logCfg["level"]
logDir := logCfg["dir"]

参见GetCoreLogger()


GetCoreLogger()

说明:获取核心日志配置项。对应配置文件中的 core_logger 键。核心日志用于记录框架内部日志,与业务日志分离。如果配置项不存在或类型不匹配,则抛出异常并退出。

参数:无

返回值map[string]any — 核心日志配置 map

示例

go
coreLogCfg := econfig.GetCoreLogger()
coreLevel := coreLogCfg["level"]

参见GetLogger()


GetHttp()

说明:获取 HTTP 服务配置项。对应配置文件中的 http 键,包含端口、启用状态、SSL 等设置。如果配置项不存在或类型不匹配,则抛出异常并退出。

参数:无

返回值map[string]any — HTTP 配置 map,典型字段包括 enableportssl

示例

go
httpCfg := econfig.GetHttp()
if httpCfg["enable"] == true {
    port := httpCfg["port"]
    fmt.Printf("HTTP 服务端口: %v\n", port)
}

GetStatic()

说明:获取静态资源配置项。对应配置文件中的 static 键,控制是否启用嵌入静态文件系统。如果配置项不存在或类型不匹配,则抛出异常并退出。

参数:无

返回值map[string]any — 静态资源配置 map,典型字段包括 enable

示例

go
staticCfg := econfig.GetStatic()
if staticCfg["enable"] == true {
    // 使用嵌入文件系统读取资源
} else {
    // 使用外部文件路径读取资源
}

Vip

说明:全局 Viper 配置实例,在 Init() 完成后可用。提供完整的 Viper API 功能(如 SetIsSetSub 等),可用于高级配置操作。

类型*viper.Viper

示例

go
// 检查键是否存在
if econfig.Vip.IsSet("custom.key") {
    val := econfig.Vip.Get("custom.key")
}

// 动态设置配置值
econfig.Vip.Set("app.name", "my-app")