package application import ( "git.sxidc.com/go-framework/baize/api" "git.sxidc.com/go-framework/baize/convenient/binding" "git.sxidc.com/go-framework/baize/infrastructure" "git.sxidc.com/go-framework/baize/infrastructure/logger" "git.sxidc.com/go-tools/utils/strutils" ) type App struct { // api实例 apiInstance *api.Api // 基础设施实例 infrastructureInstance *infrastructure.Infrastructure // 日志 loggerInstance *logger.Logger } // New 创建Application func New(api *api.Api, i *infrastructure.Infrastructure) *App { return &App{ apiInstance: api, infrastructureInstance: i, } } // Start 运行应用 func (app *App) Start() error { err := app.apiInstance.Start() if err != nil { return err } return nil } // Finish 终止应用 func (app *App) Finish() error { err := app.apiInstance.Finish() if err != nil { return err } return nil } // Api 获取api实例 func (app *App) Api() *api.Api { return app.apiInstance } // Infrastructure 获取Infrastructure实例 func (app *App) Infrastructure() *infrastructure.Infrastructure { return app.infrastructureInstance } // Logger 获取logger实例 func (app *App) Logger() *logger.Logger { return app.loggerInstance } const ( RouterRoot = "root" RouterPrefix = "prefix" ) // Binder 创建Binder func (app *App) Binder(routerType string, version string) *binding.Binder { var router api.Router switch routerType { case RouterRoot: router = app.Api().RootRouter() case RouterPrefix: router = app.Api().PrefixRouter() default: router = app.Api().PrefixRouter() } if strutils.IsStringNotEmpty(version) { router = router.VersionedRouter(version) } return binding.NewBinder(router, app.infrastructureInstance) }