GoWeb一款很好用的配置文件Viper

GoWeb一款很好用的配置文件Viper
这款读取配置文件的包地址是:Viper包。里面有详尽的使用说明,接下来我就用我项目里面的列子给大家展示一下viper的用法。
我们在学习其他语言框架的时候,我们会发现里面的配置文件是框架定义好的,只要按照说明名就可以操作了比如Laravel、ThinkPHP,但是GO语言的Iris没有提供类似的功能,我们只好借助第三方包来进行管理我们的配置文件,接下来我会有一个简单的例子来说明:

package tool

import (
    "fmt"
    "github.com/spf13/viper"
)

//读取相应的配置文件
func ReadFileConfig(configFileName string) *viper.Viper {
    config := viper.New()
    config.SetConfigName(configFileName) //配置文件的名称不带扩展名
    config.SetConfigType("json")//配置文件的扩展名
    config.AddConfigPath("%GOPATH/src/")//call multiple times to add many search paths
    config.AddConfigPath("./config/")//配置文件存放的路径
    err := config.ReadInConfig() //读取配置文件
    if err != nil{
        panic(fmt.Errorf("Fatal error config file: %s \n", err))
    }
    return config
}

我将读取配置文件的对象封装了一下,根据配置文件的文件名进行指定的读取,并且也声明了配置文件所放的文件路径

下面我将以配置文件和数据库连接做一个简单的列子,配置文件(mysql.json)如下所示:

{
  "DBUserName" : "root",
  "DBPwd" : "",
  "DBName" : "test",
  "DBHost" : "localhost",
  "DBPort" : "3306"
}

封装数据库的连接的代码如下所示:

package tool

import (
    "fmt"
    "github.com/jinzhu/gorm"
    _ "github.com/jinzhu/gorm/dialects/mysql"
)

type IDBConnect interface {
    ConnectDB() *gorm.DB
}

type DBConnectParam struct {
    DBUserName string //数据库的用户名
    DBPwd string //数据库密码
    DBName string //数据库名称
    DBHost string
    DBPort string
}

func NewDBConnect() IDBConnect{
    return &DBConnectParam{}
}

func (param *DBConnectParam) ConnectDB() *gorm.DB {
    config := ReadFileConfig("mysql")
   //将读到的配置文件,映射到MySQL结构体里
    if errConfig := config.Unmarshal(param); errConfig != nil{
        panic(fmt.Errorf("Fatal error config file: %s \n", errConfig))
    }
  //创建书库对象
    db, err := gorm.Open("mysql", fmt.Sprintf("" +
        "%s:%s@tcp(%s:%s)/%s?charset=utf8&parseTime=True&loc=Local",
        param.DBUserName,param.DBPwd,
        param.DBHost,param.DBPort,param.DBName))
    db.SingularTable(true) //去掉gorm默认表复数形式(users->user)
    if err != nil{
        fmt.Printf("Mysql connect err %v", err)
    }
    return db
}

首先我创建了数据库连接的接口,里面有一个连接的方法并返回gorm(goWeb操作数据库的对象)对象,之后定义了一个数据库连接的结构体,声明连接数据库所需的属性。开始实例化接口,实现接口的方法。我们传入配置文件的文件名,开始读取配置文件,然后将读到的配置文件映射到MySQL连接结构体,最后开始连接数据库,并返回gorm指针。

注意:如果要读取的配置文件映射到结构体,那么配置文件声明的字段和结构体必须保持一样才可以

gorm相关文档地址
iris相关文档地址

你可能感兴趣的:(GoWeb一款很好用的配置文件Viper)