首页 > 数据库 >beego阅读源码走通数据库的初始化

beego阅读源码走通数据库的初始化

时间:2022-12-27 11:35:46浏览次数:48  
标签:beego String 走通 AppConfig 源码 数据库 conn 加载

一般初始化数据库会在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.是否到文件结束
 

 

标签:beego,String,走通,AppConfig,源码,数据库,conn,加载
From: https://www.cnblogs.com/topass123/p/17007687.html

相关文章

  • 若依前后端分离项目源码解读笔记
    若依前后端分离项目源码解读笔记已于2022-12-0209:03:47修改收藏2分类专栏:springboot文章标签:java开发语言版权springboot这里写目录标题一、Spri......
  • Python爬虫实战,requests+tqdm模块,爬取漫画之家漫画数据(附源码)
    前言今天给大家介绍的是Python爬取漫画数据,在这里给需要的小伙伴们代码,并且给出一点小心得。首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫,基本的是加请求......
  • Spring IOC源码(九):IOC容器之 单例对象的创建
    1、源码解析getBean(name)是在IOC容器的顶级接口BeanFactory中定义,由其子类AbstractBeanFactory实现的方法。是IOC容器启动过程中的核心方法。核心方法流程getBean-......
  • 【项目源码】个人博客源码推荐
    一、参考资料1.蘑菇博客,一个基于微服务架构的前后端分离博客系统​​部署蘑菇博客​​部署步骤​​轻量应用服务器使用SSH登录Linux实例-操作指南-文档中心-腾......
  • beego数据交互
    模板引擎指定模板:c.TplName="index.tpl"默认支持tpl和htmlbeego.AddTemplateExt设置其他后缀beego.AddTemplateExt("后缀名")如果不设置该参数,那么默认会去到模板目录的......
  • 记一题关于git源码泄露题
    题目来源:NSSCTF——[NCTF2018]全球最大交友网站题目链接:https://www.ctfer.vip/problem/961打开环境:毫无思路,先学习一下Git源码泄露,Git就是一个内容文件寻址文件系统,......
  • go channel源码
    大纲是什么,结构体定义给chan送数据从chan读数据 是什么?1本质是一个环形数组源码中定义为hchan主要属性有数组长度数据数量环形数组环形......
  • Java同步器之ReentrantLock源码分析(一)
    一、概述ReentrantLock是Java并发包中提供的一个可重入的互斥锁。ReentrantLock和synchronized在基本用法,行为语义上都是类似的,同样都具有可重入性。只不过相比原生的Syn......
  • beego
    什么是beegobeego时基于mvc架构实现的web框架beego的优势语言层面支持并发内置强大的插件部署简单智能化,可以监控cpu,memory,goroutin强大的网络库 ......
  • Java同步器之AQS源码分析
    一、简介AbstractQueuedSynchronizer(简称AQS),抽象的队列式的同步器,是Java并发包实现的基类。AQS用来构建锁和同步器的框架,使用AQS能简单且高效地构造出大量的应用广泛......