beego的模块篇 - config配置

发布时间:2024年01月19日

加载自定义配置到beego.AppConfig中可以配置:Beego框架 app.conf配置参数及环境配置-CSDN博客

1. 文件配置

目前支持解析的文件格式有 ini、json、xml、yaml

安装依赖库:

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

1.1 ini文件配置使用

配置文件:

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

解析器对象支持的函数有如下:

  • Set(key, val string) error
  • String(key string) string
  • Int(key string) (int, error)
  • Int64(key string) (int64, error)
  • Bool(key string) (bool, error)
  • Float(key string) (float64, error)
  • DIY(key string) (interface{}, error)

1.2 json配置文件的使用

配置文件:

{
  "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

1.3?xml配置文件的使用

使用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

1.4 yaml配置文件的使用

需要引入三方包?yaml.v2 - gopkg.in/yaml.v2

2?解析器对象支持的函数

// 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实例;

?参考文件:

https://www.fansimao.com/847178.html

https://www.xichangyou.com/847199.html

文章来源:https://blog.csdn.net/liu289747235/article/details/135695122
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。