美文网首页
Beego Config

Beego Config

作者: JunChow520 | 来源:发表于2020-12-28 17:58 被阅读0次

Beego提供了iniyamlxmljsonenv等方式的参数配置,并提供不同配置方式的接口。

Beego配置文件解析采用了github.com/beego/beego/v2/core/config包,设计思路来源于database/sql,支持解析的文件格式包括inijsonxmlyaml

安装配置文件解析包

$ go get github.com/beego/beego/v2/core/config

若采用xmlyaml驱动则需手动安装

$ 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
}

相关文章

网友评论

      本文标题:Beego Config

      本文链接:https://www.haomeiwen.com/subject/sfvgnktx.html