g.DB/g.Config改进单例缓存键名

This commit is contained in:
John 2018-10-13 20:43:21 +08:00
parent 5204193c58
commit caffdb143e
4 changed files with 33 additions and 23 deletions

View File

@ -12,7 +12,7 @@ import (
)
const (
gDEFAULT_CONFIG_GROUP_NAME = "default" // 默认配置名称
DEFAULT_GROUP_NAME = "default" // 默认配置名称
)
// 数据库配置包内对象
@ -79,7 +79,7 @@ var DatabaseConfiguration = Config {
// 包初始化
func init() {
config.c = make(Config)
config.d = gDEFAULT_CONFIG_GROUP_NAME
config.d = DEFAULT_GROUP_NAME
}
// 设置当前应用的数据库配置信息,进行全局数据库配置覆盖操作
@ -105,12 +105,12 @@ func AddConfigNode (group string, node ConfigNode) {
// 添加默认链接的一台数据库服务器配置
func AddDefaultConfigNode (node ConfigNode) {
AddConfigNode(gDEFAULT_CONFIG_GROUP_NAME, node)
AddConfigNode(DEFAULT_GROUP_NAME, node)
}
// 添加默认链接的数据库服务器集群配置
func AddDefaultConfigGroup (nodes ConfigGroup) {
AddConfigGroup(gDEFAULT_CONFIG_GROUP_NAME, nodes)
AddConfigGroup(DEFAULT_GROUP_NAME, nodes)
}
// 设置默认链接的数据库链接配置项(默认是 default)

View File

@ -83,28 +83,38 @@ func View() *gview.View {
// 核心对象Config
// 配置文件目录查找依次为启动参数cfgpath、当前程序运行目录
func Config() *gcfg.Config {
return instances.GetOrSetFuncLock(gFRAME_CORE_COMPONENT_NAME_CONFIG, func() interface{} {
path := gcmd.Option.Get("gf.cfgpath")
if path == "" {
path = genv.Get("gf.cfgpath")
func Config(file...string) *gcfg.Config {
configFile := gcfg.DEFAULT_CONFIG_FILE
if len(file) > 0 {
configFile = file[0]
}
return instances.GetOrSetFuncLock(fmt.Sprintf("%s.%s", gFRAME_CORE_COMPONENT_NAME_CONFIG, configFile),
func() interface{} {
path := gcmd.Option.Get("gf.cfgpath")
if path == "" {
path = gfile.SelfDir()
path = genv.Get("gf.cfgpath")
if path == "" {
path = gfile.SelfDir()
}
}
}
config := gcfg.New(path)
// 添加基于源码的搜索目录检索地址,常用于开发环境调试,只添加入口文件目录
if p := gfile.MainPkgPath(); gfile.Exists(p) {
config.AddPath(p)
}
return config
config := gcfg.New(path, configFile)
// 添加基于源码的搜索目录检索地址,常用于开发环境调试,只添加入口文件目录
if p := gfile.MainPkgPath(); gfile.Exists(p) {
config.AddPath(p)
}
return config
}).(*gcfg.Config)
}
// 数据库操作对象,使用了连接池
func Database(name...string) *gdb.Db {
config := Config()
db := instances.GetOrSetFuncLock(gFRAME_CORE_COMPONENT_NAME_DATABASE, func() interface{} {
group := gdb.DEFAULT_GROUP_NAME
if len(name) > 0 {
group = name[0]
}
key := fmt.Sprintf("%s.%s", gFRAME_CORE_COMPONENT_NAME_DATABASE, group)
db := instances.GetOrSetFuncLock(key, func() interface{} {
m := config.GetMap("database")
if m == nil {
panic(fmt.Sprintf(`incomplete configuration for database: "database" node not found in config file "%s"`, config.GetFilePath()))
@ -158,7 +168,7 @@ func Database(name...string) *gdb.Db {
}
// 使用gfsnotify进行文件监控当配置文件有任何变化时清空数据库配置缓存
gfsnotify.Add(config.GetFilePath(), func(event *gfsnotify.Event) {
instances.Remove(gFRAME_CORE_COMPONENT_NAME_DATABASE)
instances.Remove(key)
})
if db, err := gdb.New(name...); err == nil {
return db

View File

@ -41,8 +41,8 @@ func View() *gview.View {
// Config配置管理对象
// 配置文件目录查找依次为启动参数cfgpath、当前程序运行目录
func Config() *gcfg.Config {
return gins.Config()
func Config(file...string) *gcfg.Config {
return gins.Config(file...)
}
// 数据库操作对象,使用了连接池

View File

@ -19,7 +19,7 @@ import (
)
const (
gDEFAULT_CONFIG_FILE = "config.toml" // 默认的配置管理文件名称
DEFAULT_CONFIG_FILE = "config.toml" // 默认的配置管理文件名称
)
// 配置管理对象
@ -32,7 +32,7 @@ type Config struct {
// 生成一个配置管理对象
func New(path string, file...string) *Config {
name := gDEFAULT_CONFIG_FILE
name := DEFAULT_CONFIG_FILE
if len(file) > 0 {
name = file[0]
}