当前位置: 首页 > news >正文

beego的模块篇 - config自定义文件配置

加载自定义配置到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
}

OnChange主要用于监听配置的变化。对于大部分依赖于文件系统的实现来说,都不支持。

Sub类似与GetSection,都是尝试返回配置的一部分。所不同的是,GetSection将结果组织成map,而Sub将结果组织成Config实例;

 参考文件:

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

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

http://www.lryc.cn/news/284273.html

相关文章:

  • YOLOv5-第Y2周:训练自己的数据集
  • 解决fxml图标无法显示
  • React Store及store持久化的使用
  • Hive添加第三方Jar包方式总结
  • Linux用户与文件的关系和文件掩码(umask)的作用
  • JS -- 正则表达式教程
  • 详细介绍IP 地址、网络号和主机号、ABC三类、ip地址可分配问题、子网掩码、子网划分
  • 滚动菜单+图片ListView
  • 【4k】4k的webrtc播放示例
  • PMIC 基础知识浅析(四)
  • gin+gorm增删改查目录框架
  • python进阶(二)导入import 机制 | 导入import 用法 工作原理全解析
  • 极客时间-《罗剑锋的 C++ 实战笔记》文章笔记 + 个人思考
  • Pytorch 对比TensorFlow 学习:Day 17-18: 循环神经网络(RNN)和LSTM
  • Java基础 - 07 Set之Set,AbstractSet
  • C++17新特性(三)新的标准库组件
  • Spring Boot入门
  • 【LeetCode】数学精选4题
  • 【漏洞复现】Hikvision SPON IP网络对讲广播系统命令执行漏洞(CVE-2023-6895)
  • IDEA在重启springboot项目时没有自动重新build
  • 华为设备NAT的配置
  • 48-DOM节点,innerHTML,innerText,outerHTML,outerText,静态获取,单机click,cssText
  • 多输入多输出 | Matlab实现基于LightGBM多输入多输出预测
  • 【欢迎您的到来】这里是开源库get_local_info作者的付费专栏
  • Java SE入门及基础(23)
  • 蓝桥杯回文日期判断
  • Qt文件和目录相关操作
  • 递归、搜索与回溯算法(专题一:递归)
  • element-ui 打包流程源码解析(下)
  • ChatGPT给出的前端面试考点(Vue.js)