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

2022-12-09,,,,

什么是viper

Viper是Go应用程序的完整配置解决方案,包括12-Factor(也称为“十二要素”,是一套流行的应用程序开发原则。 其实我也不是很清楚)应用程序。它被设计为在应用程序中工作,可以处理基本上所有类型的配置需求和格式。它支持:

设置默认值

读取JSON, TOML, YAML, HCL, envfile和Java属性配置文件

实时监视和重新读取配置文件(可选)

读取环境变量

从远程配置系统(etcd或Consul)读取数据,并观察变化

从命令行标志读取

读取缓冲区

设置明确的值

具体请指教看官网

https://pkg.go.dev/github.com/spf13/viper#section-readme

安装

go get github.com/spf13/viper
go get gorm.io/gorm
go get gorm.io/driver/mysql

使用

在项目文件下 config/application.yaml文件,内容如下:

server:
port: 1016
datasource:
driverName: mysql
host: 127.0.0.1
port: 3306
database: ginInessential
username: root
password: admin*123
charset: utf8
loc: Asia/Shanghai

写完之后 在main函数中要初始化配置

func InitConfig() {
workDir, _ := os.Getwd()
viper.SetConfigName("application")
viper.SetConfigType("yml")
viper.AddConfigPath(workDir + "/config") err := viper.ReadInConfig()
if err != nil {
return
}
}

在初始化DB中使用

package common

import (
"GinDemo/model"
"fmt"
"github.com/spf13/viper"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"log"
"net/url"
) var DB *gorm.DB func InitDB() *gorm.DB {
//driverName := "mysql"
host := viper.GetString("datasource.host")
port := viper.GetString("datasource.port")
username := viper.GetString("datasource.username")
password := viper.GetString("datasource.password")
database := viper.GetString("datasource.database")
charset := viper.GetString("datasource.charset")
loc:= viper.GetString("datasource.loc")
args := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=%s&parseTime=true&loc=%s",
username,
password,
host,
port,
database,
charset,
url.QueryEscape(loc),
) var err error DB, err = gorm.Open(mysql.Open(args), &gorm.Config{})
if err != nil {
log.Fatal(err)
}
fmt.Printf("连接成功:%v\n", DB) return DB
}

main函数调用


func main() {
//初始化配置
InitConfig() //初始化数据库
common.InitDB() //使用gin
r := gin.Default()
r = CollectRoute(r) port := viper.GetString("server.port") if port != "" {
_ = r.Run(":" + port)
} else {
err := r.Run()
if err != nil {
return
}
} }

gin框架——使用viper读取配置的相关教程结束。

《gin框架——使用viper读取配置.doc》

下载本文的Word格式文档,以方便收藏与打印。