Beego提供了ini
、yaml
、xml
、json
、env
等方式的参数配置,并提供不同配置方式的接口。
Beego配置文件解析采用了github.com/beego/beego/v2/core/config
包,设计思路来源于database/sql
,支持解析的文件格式包括ini
、json
、xml
、yaml
。
安装配置文件解析包
$ go get github.com/beego/beego/v2/core/config
若采用xml
或yaml
驱动则需手动安装
$ go get -u github.com/beego/beego/v2/core/config/xml
引入该包
import _ "github.com/beego/beego/v2/core/config/xml"
为简化代码在config
初始化时默认会创建名为globalInstance
的实例,在没有显式初始化的情况下,默认会采用ini
作为实现,同时会自动加载conf/app.conf
文件,若加载失败则会输出警告信息。
导入成功后可直接使用config
包
val, err := config.String("key")
配置包
import (
"github.com/astaxie/beego"
config "github.com/astaxie/beego/config"
logs "github.com/astaxie/beego/logs"
)
应用配置
若配置文件位于默认conf/app.conf
文件中则可以直接使用beego.AppConfig.String(key)
获取指定键名的值
例如:配置MySQL连接参数
$ vim conf/app.conf
dbdriver = mysql
dbhost = 127.0.0.1
dbport = 3306
dbuser = root
dbpassword = root
dbname = gmms
dbprefix = ""
dbcharset = utf8mb4
dbloc = Asia%2FShanghai
注意数据库时区设置为Asia/Shanghai
,其中使用的/
需要处理为%2F
,否则会报出错误:
register db Ping `default`, invalid DSN: did you forget to escape a param value?
panic: unknown DataBase alias name default
控制器中读取配置
$ vim controllers/test.go
//dbdriver := beego.AppConfig.String("dbdriver")
dbhost := beego.AppConfig.String("dbhost")
dbport := beego.AppConfig.String("dbport")
dbuser := beego.AppConfig.String("dbuser")
dbpassword := beego.AppConfig.String("dbpassword")
dbname := beego.AppConfig.String("dbname")
dbcharset := beego.AppConfig.String("dbcharset")
dbloc := beego.AppConfig.String("dbloc")
dsn := dbuser + ":" + dbpassword + "@tcp(" + dbhost + ":" + dbport + ")/" + dbname + "?charset=" + dbcharset + "&loc=" + dbloc
fmt.Println(dsn)// root:root@tcp(127.0.0.1:3306)/gmms?charset=utf8mb4&loc=Asia/Shanghai
分段配置
Beego配置文件支持section
分配配置,即根据app.conf
中不同的运行环境runmode
设置,优先读取对应环境下的配置信息。
$ vim conf/app.go
runmode = dev
创建对应运行环境的配置
$ vim conf/database.ini
[dev]
dbdebug = true
dbalias = default
dbdriver = mysql
dbhost = 127.0.0.1
dbport = 3306
dbuser = root
dbpassword = root
dbname = gmms
dbprefix = ""
dbcharset = utf8mb4
dbloc = Local
maxIdleConns = 1000
maxOpenConns = 2000
独立配置
若使用独立的配置文件,配置文件默认采用ini
格式。
$ vim conf/database.ini
dbdriver = mysql
dbhost = 127.0.0.1
dbport = 3306
dbuser = root
dbpassword = root
dbname = gmms
dbprefix = ""
dbcharset = utf8mb4
dbloc = Asia%2FShanghai
读取应用配置
$ vim controllers/test.go
package controllers
import (
"fmt"
"github.com/astaxie/beego"
config "github.com/astaxie/beego/config"
logs "github.com/astaxie/beego/logs"
)
type TestController struct {
beego.Controller
}
func (this *TestController) Get() {
iniconf, err := config.NewConfig("ini", "conf/database.ini")
if err != nil{
logs.Error(err)
}
//dbdriver := iniconf.String("dbdriver")
dbhost := iniconf.String("dbhost")
dbport := iniconf.String("dbport")
dbname := iniconf.String("dbname")
dbuser := iniconf.String("dbuser")
dbpassword := iniconf.String("dbpassword")
dbcharset := iniconf.String("dbcharset")
dbloc := iniconf.String("dbloc")
dsn := dbuser + ":" + dbpassword + "@tcp(" + dbhost + ":" + dbport + ")/" + dbname + "?charset=" + dbcharset + "&loc=" + dbloc
fmt.Println(dsn)//root:root@tcp(127.0.0.1:3306)/gmms?charset=utf8mb4&loc=Asia/Shanghai
}
网友评论