配置文件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读取配置文件的更多相关文章

  1. golang模块viper读取配置文件

    一.介绍 Viper是一个方便Go语言应用程序处理配置信息的库.它可以处理多种格式的配置.它支持的特性: 设置默认值 从JSON.TOML.YAML.HCL和Java properties文件中读取配 ...

  2. 使用Viper读取Nacos配置(开源)

    使用Viper读取Nacos配置(开源) 一.前言 目前Viper支持的Remote远程读取配置如 etcd, consul:目前还没有对Nacos进行支持,本文中将开源一个Nacos的Viper支持 ...

  3. gin框架——使用viper读取配置

    什么是viper Viper是Go应用程序的完整配置解决方案,包括12-Factor(也称为"十二要素",是一套流行的应用程序开发原则. 其实我也不是很清楚)应用程序.它被设计为在 ...

  4. 【无私分享:ASP.NET CORE 项目实战(第八章)】读取配置文件(二) 读取自定义配置文件

    目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 我们在 读取配置文件(一) appsettings.json 中介绍了,如何读取appsettings.json. 但随之产生 ...

  5. 解决IntelliJ IDEA无法读取配置文件的问题

    解决IntelliJ IDEA无法读取配置文件的问题 最近在学Mybatis,按照视频的讲解在项目的某个包里建立配置文件,然后读取配置文件,但是一直提示异常. 读取配置文件的为官方代码: String ...

  6. java-工具类-读取配置文件

    java读取配置文件,当发现文件被修改后则重新加载 package com.zg.config; import java.io.File; import java.io.FileInputStream ...

  7. java 4种方式读取配置文件 + 修改配置文件

    版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[-] 方式一采用ServletContext读取读取配置文件的realpath然后通过文件流读取出来 方式二采用ResourceB ...

  8. 在IIS Express中调试时无法读取配置文件 错误

    在IIS Express中调试代码时,如果出现"无法读取配置文件"的问题(如图),这种情况是IIS Express的"applicationhost.config&quo ...

  9. ASP.NET Core开发-读取配置文件Configuration

    ASP.NET Core 是如何读取配置文件,今天我们来学习. ASP.NET Core的配置系统已经和之前版本的ASP.NET有所不同了,之前是依赖于System.Configuration和XML ...

  10. Java 利用 ByteArrayOutputStream 和 ByteArrayInputStream 避免重复读取配置文件

    最近参与了github上的一个开源项目 Mycat,是一个mysql的分库分表的中间件.发现其中读取配置文件的代码,存在频繁多次重复打开,读取,关闭的问题,代码写的很初级,稍微看过一些框架源码的人,是 ...

随机推荐

  1. 学习Java Day29

    今天学习了类的设计技巧: 1.一定要保证数据私有 2.一定要对数据初始化 3.不要在类中使用过多的基本类型 4.不是所有的字段都需要单独的字段访问器和字段更改器 5.分解有过多职责的类 6.类名和方法 ...

  2. 微信小程序更新机制

    微信小程序更新机制的说明 官方文档地址:https://developers.weixin.qq.com/miniprogram/dev/framework/runtime/update-mechan ...

  3. Cookie参数、Header参数

    FastAPI Cookie参数 定义Cookie参数与定义Query和Path参数一样. 第一个值是默认值,还可以传递所有验证参数或注释参数: from typing import Optional ...

  4. CSS动画,盒子爬坡源码

    html: <!DOCTYPE html> <html lang="en"> <head>     <meta charset=" ...

  5. NSAIDs以优化剂量治疗中轴型SpA:聚焦6周期间骶髂关节MRI变化

    NSAIDs以优化剂量治疗中轴型SpA:聚焦6周期间骶髂关节MRI变化 PresentID: OP0170 TREATMENT OF AXIAL SPONDYLOARTHRITIS WITH AN O ...

  6. 基于C++的OpenGL 14 之模型加载

    1. 引言 本文基于C++语言,描述OpenGL的模型加载 前置知识可参考: 基于C++的OpenGL 13 之Mesh - 当时明月在曾照彩云归 - 博客园 (cnblogs.com) 笔者这里不过 ...

  7. 论文学习 Dilated Inception U-Net (DIU-Net) for Brain Tumor Segmentation 1

    好记性不如烂笔头 边学习边记录1 主题:脑肿瘤分割 使用基于Unet的端到端的网络结构,在扩张和紧缩路径中加入了Inception模块和空洞卷积. 数据集:Tumor Segmentation (Br ...

  8. 自定义view,用来测试屏幕

    public class BezierGestureTrackView extends View { private Bitmap mBufferBitmap; private Canvas mBuf ...

  9. 第三章-标准SQL语句

    3.1 SQL概述: SQL:结构化查询语言,是关系数据库的标准语言,SQL是一个通用的.功能极强的关系数据库语言 结构化查询:理解:就是只要告诉数据库我要干什么,怎么干就可以了 3.1.2 SQL的 ...

  10. TP3.2 I('post.') 获取到的参数特殊字符被自动转义

    eg:原数据 :&这是一条测试数据 被转义后的数据:&nbmp;  这是一条测试数据 解决办法: $input = json_encode(I('post.'));$input = h ...