Golang一日一库之 viper
什么是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 } } }
本文发表于博客园《始識的技术笔记》,作者为 zichliang(hybpjx/始識)
作者博客:https://www.cnblogs.com/zichliang
本文地址:https://www.cnblogs.com/zichliang/p/16832600.html
本文原创授权为:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本
作者博客:https://www.cnblogs.com/zichliang
本文地址:https://www.cnblogs.com/zichliang/p/16832600.html
本文原创授权为:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!