一般初始化数据库会在main的运行的时候第一步进行,常用的方式

    dbhost := beego.AppConfig.String("dbhost")
    dbport := beego.AppConfig.String("dbport")
    dbuser := beego.AppConfig.String("dbuser")
    dbpassword := beego.AppConfig.String("dbpassword")
    db := beego.AppConfig.String("db")

    //注册mysql Driver
    orm.RegisterDriver("mysql", orm.DRMySQL)
    //构造conn连接
    //用户名:密码@tcp(url地址)/数据库
    conn := dbuser + ":" + dbpassword + "@tcp(" + dbhost + ":" + dbport + ")/" + db + "?charset=utf8"
    //注册数据库连接
    orm.RegisterDataBase("default", "mysql", conn)
    fmt.Printf("数据库连接成功!%s\n", conn)  

使用String就可以得到对应的参数值,如何实现的

第一步:
AppConfig本质是beegoAppConfig的指针。而这个指针的观察这使用了Configer接口,故而需要实现该接口下的所有方法。这里面就包括了String

第二步
String方法要求传入一个key,返回一个string的value。很显然在这里其实静态文件beego已经加载完成

第三步
如果不想现在配置在临时的时候可以使用Set方法,但是注意他是没有string的返回值的

第四步
重新回到第二步,需要去思考,配置文件是如何加载进来的。这里需要知道beego程序运行是从import->const->var->init->main。故而
程序加载beego->Configer->init;在init里面实例化newBConfig,newBConfig是对config的指针,这里仅仅是做一些默认的初始化。正式使用的配置文件是

appConfigPath = filepath.Join(WorkPath, "conf", filename)
WorkPath是工程目录通过os.Getwd()获取到的,filename这是程序中默认写了"app.conf",到目前为止就找到了配置文件

第五步
parseConfig->NewConfig->parseFile,将整个文件加载进来->parseData,数据进来加锁,退出前去锁。然后做一些win的文件头识别。

第六步
最后对对一行行数据进行加载和判断。判断:1.是否到该行结束2.是否到文件结束;还有更多细节,自行阅读源码
 

 

posted on 2022-12-27 11:25  topass123  阅读(64)  评论(0编辑  收藏  举报