使用viper读取配置文件
配置文件config.yml
mysql:
type: mysql
dsn: "user:pass@tcp(localhost:30306)/db_name?charset=utf8&parseTime=True&loc=Local"
maxopen: 100
maxidle: 10
maxlifetime: 300
redis:
host: 127.0.0.1
port: 3306
读取配置文件
package config
import (
"github.com/spf13/viper"
"path"
"runtime"
"time"
)
type mysqlConfig struct { // 配置属性跟类型字段不同名是要加下面这个tag
Type string `mapstructure:"type"`
DSN string `mapstructure:"dsn"`
MaxOpenConn int `mapstructure:"maxopen"`
MaxIdleConn int `mapstructure:"maxidle"`
MaxLifeTime time.Duration `mapstructure:"maxlifetime"`
}
type redisConfig struct { // 配置属性跟类型字段不同名是要加下面这个tag
Host string `mapstructure:"host"`
Port string `mapstructure:"port"`
}
var Mysql *mysqlConfig
var Redis *redisConfig
func init() {
// 获取当前文件的路径
_, filename, _, _ := runtime.Caller(0)
// 配置文件目录的路径
configBaseDir := path.Dir(filename)
vp := viper.New()
vp.AddConfigPath(configBaseDir)
vp.SetConfigType("yaml")
err := vp.ReadInConfig()
if err != nil {
panic(err)
}
vp.UnmarshalKey("mysql", &Mysql)
vp.UnmarshalKey("redis", &Redis)
Mysql.MaxLifeTime *= time.Second
}
调用配置内容
import (
"fmt"
"lianxi/config"
)
func main() {
fmt.Println(config.Redis.Port)
fmt.Println(config.Mysql.Type)
}
参考文档 https://zhuanlan.zhihu.com/p/485608958 https://www.cnblogs.com/randysun/p/15889494.html
使用viper读取配置文件的更多相关文章
- golang模块viper读取配置文件
一.介绍 Viper是一个方便Go语言应用程序处理配置信息的库.它可以处理多种格式的配置.它支持的特性: 设置默认值 从JSON.TOML.YAML.HCL和Java properties文件中读取配 ...
- 使用Viper读取Nacos配置(开源)
使用Viper读取Nacos配置(开源) 一.前言 目前Viper支持的Remote远程读取配置如 etcd, consul:目前还没有对Nacos进行支持,本文中将开源一个Nacos的Viper支持 ...
- gin框架——使用viper读取配置
什么是viper Viper是Go应用程序的完整配置解决方案,包括12-Factor(也称为"十二要素",是一套流行的应用程序开发原则. 其实我也不是很清楚)应用程序.它被设计为在 ...
- 【无私分享:ASP.NET CORE 项目实战(第八章)】读取配置文件(二) 读取自定义配置文件
目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 我们在 读取配置文件(一) appsettings.json 中介绍了,如何读取appsettings.json. 但随之产生 ...
- 解决IntelliJ IDEA无法读取配置文件的问题
解决IntelliJ IDEA无法读取配置文件的问题 最近在学Mybatis,按照视频的讲解在项目的某个包里建立配置文件,然后读取配置文件,但是一直提示异常. 读取配置文件的为官方代码: String ...
- java-工具类-读取配置文件
java读取配置文件,当发现文件被修改后则重新加载 package com.zg.config; import java.io.File; import java.io.FileInputStream ...
- java 4种方式读取配置文件 + 修改配置文件
版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 方式一采用ServletContext读取读取配置文件的realpath然后通过文件流读取出来 方式二采用ResourceB ...
- 在IIS Express中调试时无法读取配置文件 错误
在IIS Express中调试代码时,如果出现"无法读取配置文件"的问题(如图),这种情况是IIS Express的"applicationhost.config&quo ...
- ASP.NET Core开发-读取配置文件Configuration
ASP.NET Core 是如何读取配置文件,今天我们来学习. ASP.NET Core的配置系统已经和之前版本的ASP.NET有所不同了,之前是依赖于System.Configuration和XML ...
- Java 利用 ByteArrayOutputStream 和 ByteArrayInputStream 避免重复读取配置文件
最近参与了github上的一个开源项目 Mycat,是一个mysql的分库分表的中间件.发现其中读取配置文件的代码,存在频繁多次重复打开,读取,关闭的问题,代码写的很初级,稍微看过一些框架源码的人,是 ...
随机推荐
- Zstack救急实战记录
起了这么个标题很容易引起歧义,先说明:是Zstack云架构帮我救急,而不是Zstack系统出了问题被救.具体容我慢慢道来: 使用Docker搭建EPICS的IOC记录 去年暑假时在一台工控机上裸装ce ...
- 如何优化线上WebAssembly
如何优化线上WebAssembly WebAssembly部署使用 HTTPS : 为什么?我可以通过一个案例查看 ,下面我们会通过masa docs站点进行测试 打开 http://docs.mas ...
- 真·生产力「GitHub 热点速览」
这些工具真的能极大提高生产力,节约你的时间来自(摸)我(鱼)增(划)值(水).先别提 style2paints,你给它随意画个草图,就能给你一个能交付给甲方爸爸的成品插画.如果提升 30%-40% 传 ...
- 我做的百度飞桨PaddleOCR .NET调用库
我做的百度飞桨PaddleOCR .NET调用库 .NET Conf 2021中国我做了一次<.NET玩转计算机视觉OpenCV>的分享,其中提到了一个效果特别好的OCR识别引擎--百度飞 ...
- 【USACO 2021 US Open, Platinum】United Cows of Farmer John
\(\text{Solution}\) 简要的口胡 线段树维护合法左端点数量 正序枚举 \(i\),将其视为右端点,去除不合法的左端点,统计贡献 再将其视为中间点,由它产生的左端点在线段树上区间加 注 ...
- Luogu P3919 【模板】可持久化线段树 1(可持久化数组)
板子,正好温习一下主席树的写法 记得数组开 \(32\) 倍!! \(Code\) #include<cstdio> using namespace std; const int N = ...
- SVN信息泄露漏洞
SVN信息泄露漏洞 目录 SVN信息泄露漏洞 1 SVN 简介 2 SVN目录 3 SVN信息泄露漏洞危害 4 漏洞利用 5 漏洞修复 1 SVN 简介 SVN(subversion)是一个开放源代码 ...
- Java的注释和标识符
java 的注释规则 1. 单行注释 语法:// 描述://用于当行注释,与JavaScript一样 //这是一个代码注释 2. javadoc注释 语法: /** *注释内容 / 描述:多行注释中可 ...
- c++_成员函数回调
//--------------------------------------------------------------------------- #include <vcl.h> ...
- Linux数据实时同步(sersync+rsync)
一.Slave服务器配置 1.在Slave服务器上安装Rsync [root@slave ~]# rpm -ivh rsync-3.1.2-11.el7_9.x86_64.rpm ###rpm 自行下 ...