GoFrame 配置管理-配置對(duì)象

2022-03-29 15:25 更新

我們推薦使用單例模式獲取配置管理對(duì)象。我們可以方便地通過(guò)?g.Cfg()?獲取默認(rèn)的全局配置管理對(duì)象。同時(shí),我們也可以通過(guò)?gcfg.Instance?包方法獲取配置管理對(duì)象單例。

使用g.Cfg

我們來(lái)看一個(gè)示例,演示如何讀取全局配置的信息。需要注意的是,全局配置是與框架相關(guān)的,因此統(tǒng)一使用?g.Cfg()?進(jìn)行獲取。以下是一個(gè)默認(rèn)的全局配置文件,包含了模板引擎的目錄配置以及?MySQL?數(shù)據(jù)庫(kù)集群(兩臺(tái)?master?)的配置。

示例配置:

viewpath: "/home/www/templates/"
database:
  default:
  - link: "mysql:root:12345678@tcp(127.0.0.1:3306)/test"
    role: "master"
  - link: "mysql:root:12345678@tcp(127.0.0.1:3306)/test"
    role: "slave"

示例代碼:

package main

import (
	"fmt"

	"github.com/gogf/gf/v2/frame/g"
	"github.com/gogf/gf/v2/os/gctx"
)

func main() {
	var ctx = gctx.New()
	fmt.Println(g.Cfg().Get(ctx, "viewpath"))
	fmt.Println(g.Cfg().Get(ctx, "database.default.0.role"))
}

以上示例為讀取數(shù)據(jù)庫(kù)的第一個(gè)配置的?role?信息。運(yùn)行后輸出:

/home/www/templates/
master

可以看到,我們可以通過(guò)?g.Cfg()?方法獲取一個(gè)全局的配置管理器單例對(duì)象。配置文件內(nèi)容可以通過(guò)英文“?.?”號(hào)進(jìn)行層級(jí)訪問(wèn)(數(shù)組默認(rèn)從?0?開(kāi)始),?pattern?參數(shù)?database.default.0.role?表示讀取?database?配置項(xiàng)中?default?數(shù)據(jù)庫(kù)集群中的第?0?項(xiàng)數(shù)據(jù)庫(kù)服務(wù)器的?role?數(shù)據(jù)。

使用gcfg.Instance

當(dāng)然也可以獨(dú)立使用?gcfg?包,通過(guò)?Instance?方法獲取單例對(duì)象。

package main

import (
	"fmt"

	"github.com/gogf/gf/v2/os/gcfg"
	"github.com/gogf/gf/v2/os/gctx"
)

func main() {
	var ctx = gctx.New()
	fmt.Println(gcfg.Instance().Get(ctx, "viewpath"))
	fmt.Println(gcfg.Instance().Get(ctx, "database.default.0.role"))
}

自動(dòng)檢索特性

單例對(duì)象在創(chuàng)建時(shí)會(huì)按照文件后綴?toml/yaml/yml/json/ini/xml?自動(dòng)檢索配置文件。默認(rèn)情況下會(huì)自動(dòng)檢索配置文件?config.toml/yaml/yml/json/ini/xml?并緩存,配置文件在外部被修改時(shí)將會(huì)自動(dòng)刷新緩存。

為方便多文件場(chǎng)景下的配置文件調(diào)用,簡(jiǎn)便使用并提高開(kāi)發(fā)效率,單例對(duì)象在創(chuàng)建時(shí)將會(huì)自動(dòng)使用單例名稱進(jìn)行文件檢索。例如:?g.Cfg("redis")?獲取到的單例對(duì)象將默認(rèn)會(huì)自動(dòng)檢索?redis.toml/yaml/yml/json/ini/xml?,如果檢索成功那么將該文件加載到內(nèi)存緩存中,下一次將會(huì)直接從內(nèi)存中讀?。划?dāng)該文件不存在時(shí),則使用默認(rèn)的配置文件(?config.toml?)。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)