起源
前言
我们在初探中,从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 =

最低0.47元/天 解锁文章
5127

被折叠的 条评论
为什么被折叠?



