加载自定义配置到beego.AppConfig中可以配置:Beego框架 app.conf配置参数及环境配置-CSDN博客
目前支持解析的文件格式有 ini、json、xml、yaml
安装依赖库:
go get github.com/beego/beego/v2/core/config
配置文件:
appname="beego"
[demo]
key1 = "asta"
key2 = "xie"
首先初始化一个解析器对象,然后获取数据,ini 配置文件支持 section 操作,key通过?section::key
?的方式获取。
import (
"fmt"
"github.com/astaxie/beego/config"
)
func main() {
//初始化一个解析器对象
iniconf, err := config.NewConfig("ini", "conf/testini.conf")
if err != nil {
fmt.Println(err)
return
}
//通过key获取数据
appname := iniconf.String("appname")
//通过 section::key 的方式获取
key1 := iniconf.String("demo::key1")
fmt.Println(appname, key1)
}
打印信息:
PS C:\Users\leell\go\src\quickstart> go run test.go
beego asta
解析器对象支持的函数有如下:
配置文件:
{
"appname": "beego",
"demo": {
"key1": "asta",
"key2": "xie"
}
}
与ini一样的解析,首先初始化一个解析器对象,然后获取数据,ini 配置文件支持 section 操作,key通过?section::key
?的方式获取。
import (
"fmt"
"github.com/astaxie/beego/config"
)
func main() {
//初始化一个解析器对象
iniconf, err := config.NewConfig("json", "conf/testini.json")
if err != nil {
fmt.Println(err)
return
}
//通过key获取数据
appname := iniconf.String("appname")
//通过 section::key 的方式获取
key1 := iniconf.String("demo::key1")
fmt.Println(appname, key1)
}
打印信息:
PS C:\Users\leell\go\src\quickstart> go run test.go
beego asta
使用xml 或者 yaml 驱动就需要手工安装引入包
go get -u github.com/astaxie/beego/config/xml
?配置文件:
<config>
<appname>beego</appname>
<demo>
<key1>asta</key1>
<key2>xie</key2>
</demo>
</config>
代码获取配置:
import (
"fmt"
"github.com/astaxie/beego/config"
_ "github.com/astaxie/beego/config/xml"
)
func main() {
//初始化一个解析器对象
iniconf, err := config.NewConfig("xml", "conf/testini.xml")
if err != nil {
fmt.Println(err)
return
}
//通过key获取数据
appname := iniconf.String("appname")
//通过 section::key 的方式获取
key1 := iniconf.String("demo::key1")
fmt.Println(appname, key1+"==")
}
?打印信息:
PS C:\Users\leell\go\src\quickstart> go run test.go
beego ==
通过打印信息可以看出xml貌似不支持section
需要引入三方包?yaml.v2 - gopkg.in/yaml.v2
// Configer 定义如何从配置原始数据中获取和设置值的接口。
type Configer interface {
// Set 设置指定键的值。
// 对于 INI 类型,支持在键中使用 section::key 格式。
Set(key, val string) error
// String 获取指定键的字符串值。
// 对于 INI 和 JSON 类型,支持在键中使用 section::key 格式。
String(key string) (string, error)
// Strings 获取指定键的字符串切片。
Strings(key string) ([]string, error)
// Int 获取指定键的整数值。
// 对于 INI 和 JSON 类型,支持在键中使用 section::key 格式。
Int(key string) (int, error)
// Int64 获取指定键的 int64 值。
// 对于 INI 和 JSON 类型,支持在键中使用 section::key 格式。
Int64(key string) (int64, error)
// Bool 获取指定键的布尔值。
// 对于 INI 和 JSON 类型,支持在键中使用 section::key 格式。
Bool(key string) (bool, error)
// Float 获取指定键的浮点数值。
// 对于 INI 和 JSON 类型,支持在键中使用 section::key 格式。
Float(key string) (float64, error)
// DefaultString 获取指定键的字符串值,如果键不存在则返回默认值。
DefaultString(key string, defaultVal string) string
// DefaultStrings 获取指定键的字符串切片,如果键不存在则返回默认值。
DefaultStrings(key string, defaultVal []string) []string
// DefaultInt 获取指定键的整数值,如果键不存在则返回默认值。
DefaultInt(key string, defaultVal int) int
// DefaultInt64 获取指定键的 int64 值,如果键不存在则返回默认值。
DefaultInt64(key string, defaultVal int64) int64
// DefaultBool 获取指定键的布尔值,如果键不存在则返回默认值。
DefaultBool(key string, defaultVal bool) bool
// DefaultFloat 获取指定键的浮点数值,如果键不存在则返回默认值。
DefaultFloat(key string, defaultVal float64) float64
// DIY 返回原始值
DIY(key string) (interface{}, error)
// GetSection 获取指定 section 的键值对。
GetSection(section string) (map[string]string, error)
// Unmarshaler 将配置解码到指定对象。
Unmarshaler(prefix string, obj interface{}, opt ...DecodeOption) error
// Sub 返回一个子配置,根据指定的键前缀。
Sub(key string) (Configer, error)
// OnChange 注册配置项变更时的回调函数。
OnChange(key string, fn func(value string))
// SaveConfigFile 保存配置到指定文件。
SaveConfigFile(filename string) error
}
1?OnChange
主要用于监听配置的变化。对于大部分依赖于文件系统的实现来说,都不支持。
2?Sub
类似与GetSection
,都是尝试返回配置的一部分。所不同的是,GetSection
将结果组织成map
,而Sub
将结果组织成Config
实例;
?参考文件: