首页 > 其他分享 >viper-读取配置文件

viper-读取配置文件

时间:2023-02-19 00:56:00浏览次数:33  
标签:配置文件 err fmt serverConfig test viper Println 读取

测试一:
type ServerConfig struct {
ServiceName string `mapstructure:"name"`
Age int `mapstructure:"age"`
}

func main() {
v := viper.New()
//文件路径设置
v.SetConfigFile("test.yaml")

//读取配置文件的内容到viper
if err := v.ReadInConfig(); err != nil {
panic(err)
}

//拿到配置文件的两种方式
//1.v.Get(配置名字)
fmt.Println(v.Get("name"))

//2.把配置的值封装到结构体
//需要反编码到结构体
serverConfig := ServerConfig{}
if err := v.Unmarshal(&serverConfig); err != nil {
panic(err)
}
fmt.Println(serverConfig)

//web-test
//{web-test 14}

}


测试二:
// viper读取环境变量
func GetEnvInfo(env string) bool {
viper.AutomaticEnv()
return viper.GetBool(env)
}

func main() {
debug := GetEnvInfo("VIPER_DEBUG")
fmt.Println(debug)
configFilePrefix := "config"
configFileName := fmt.Sprintf("user-web/viper-test/ch1/%s-pro.yaml", configFilePrefix)
if debug {
configFileName = fmt.Sprintf("user-web/viper-test/ch1/%s-pro.yaml", configFilePrefix)
}

v := viper.New()
v.SetConfigFile(configFileName)
if err := v.ReadInConfig(); err != nil {
panic(err)
}

serverConfig := ServerConfig{}
if err := v.Unmarshal(&serverConfig); err != nil {
panic(err)
}

fmt.Println(serverConfig.MysqlInfo.Host)

//viper的功能- 动态监控变化 就是修改yaml的时候能够被检测到然后处理
v.WatchConfig()
v.OnConfigChange(func(e fsnotify.Event) {
fmt.Println("config file change :", e.Name)
_ = v.ReadInConfig()
_ = v.Unmarshal(&serverConfig)
fmt.Println(serverConfig)
})



}

标签:配置文件,err,fmt,serverConfig,test,viper,Println,读取
From: https://www.cnblogs.com/lunar-huazai/p/17134090.html

相关文章

  • Springboot项目把配置文件application.properties改成application.yml,以及多环境配置
    1、Springboot的配置文件application.properties直接改成application.yml,然后按照yml格式配置应该就能生效了如果不能生效,可以看一下target里面的配置文件是properties还......
  • 参考iictools源码实现HP203b气压温度传感器读取
    参考i2ctools源码实现HP203B气压温度传感器读取由于开发的设备中要用到HP203B气压温度传感器,此设备要用到i2c协议进行数据的读取,我将以韦东山老师课程为指引,参考经典的i2c......
  • Python配置文件管理之ini和yaml文件读取
    1.引言当我们设计软件时,我们通常会花费大量精力来编写高质量的代码。但这往往还不够,一个好的软件还应该考虑其整个系统,如测试、部署、网络等。其中最重要的一个方面是配置......
  • hrnet读取关键点顺序
     按照json读取。num_people=len(anno)area=np.zeros((num_people,1))joints=np.zeros((num_people,self.num_joints_with_center,3))......
  • 大文件读取的实现-PYTHON
    当前一个大文件大小,比当前的机器的内存大,先读取某个文件里的一部分。文件遍历因为文件保存了很多字符和行,因此也是循环常见的典型使用案例,最原始的方法可以调用文件对象的re......
  • PHP超低内存遍历目录文件和读取超大文件
    前言这篇笔记主要解决这么几个问题:PHP如何使用超低内存快速遍历数以万计的目录文件?PHP如何使用超低内存快速读取几百MB甚至是GB级文件?顺便解决哪天我忘了可以通过搜索引擎......
  • opencv二:视频读取与保存
    1.打开摄像头#打开摄像头importcv2cap=cv2.VideoCapture(0)while(True):ret,frame=cap.read()#返回两个值,第一个为bool类型,如果读到帧返回True,如果没读到帧返回Fa......
  • opencv一:图像读取与保存
    如果不想每次在命令前加上cv2的话,可以将importcv2改为fromcv2import*图像读取函数:cv2.imread(图像路径,标志符)图像路劲可以是绝对路径和相对路径标识符有三种:cv2.IMREAD......
  • java在线读取Excel内容
    本示例采用Springboot的Thymeleaf做前台展示,核心还是java代码,想了解Thymeleaf的可以点击​​《SpringBoot入门十六,添加Thymeleaf模板支持》​​进行入门学习,这里就只做关于......
  • 读取properties文件,并将数据赋值给实体类
    @Data@Configuration//读取文件中的数据@PropertySource("classpath:aliyun.properties")//将文件中的数据赋值给实体类中的属性@ConfigurationProperties(prefix="a......