beego源码分析(二)——起源

起源

前言

我们在初探中,从beego.run和routers package两个方向分析整个服务的框架与golang底层的框架一致。但我们还有一些疑问?

实际上beego的入口只有beego.Run,怎么与routers具体联系起来的呢?

接下来我们一步步看下beego.Run背后的逻辑。

一、import & init

我们首先从程序最开始的import部分开始看。

import (

    _ "test/routers"

    "github.com/astaxie/beego"
)

我们知道golang的初始化的方向如下:
初始化方向

按照这个方向,我们可以知道先调用routers package init,在routers内再次import “github.com/astaxie/beego”,因此先调用beego package init,然后调用routers package init。

1.beego init

代码如下:

var (
    // BeeApp is an application instance
    BeeApp *App
)

func init() {
   
    // create beego application
    BeeApp = NewApp()
}

func NewApp() *App {
   
    cr := NewControllerRegister()
    app := &App{
   Handlers: cr, Server: &http.Server{
   }}
    return app
}

func NewControllerRegister() *ControllerRegister {
   
    cr := &ControllerRegister{
   
        routers:  make(map[string]*Tree),
        policies: make(map[string]*Tree),
    }
    cr.pool.New = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值