Documentation
¶
Index ¶
- Constants
- Variables
- func CoreContext(c any) providerCtx.ICoreContext
- func ErrorStack(debugStack ...bool) string
- func Exception() *exception.Exception
- func GetErrOrNoDocuments(err error) error
- func GetInstance[T any](name string) (T, error)
- func GetJsonIndent(appCtx IApplicationContext, s string, log bootstrap.LoggerWrapper, ...) []byte
- func GetMustInstance[T any](name string) T
- func GetNamespace(overrides []string, ns ...string) []string
- func GetNoDocumentsError[T any](err error) (T, error)
- func MustRecoverMiddleware[T any](fn any) T
- func RecoverMiddleware[T any](fn any) (T, error)
- func RecoverPanicInternal(pCtx providerctx.ICoreContext, cfg RecoverConfig)
- func RegisterKeyInitializerFunc(keyName string, Initializer globalmanager.InitializerFunc) (key string)
- func RegisterKeyName(name string, ns ...string) (key string)
- func RespInfo() *response.RespInfo
- func RespMsgpack() response.IResponse
- func RespProto() response.IResponse
- func RunApplicationStarter(starter ApplicationStarter, managers ...IProviderManager)
- func ValidateException() *exception.ValidateException
- type Api
- type ApiLocator
- type AppContext
- func (c *AppContext) GetAppState() bool
- func (c *AppContext) GetBootConfig() *BootConfig
- func (c *AppContext) GetConfig() appconfig.IAppConfig
- func (c *AppContext) GetContainer() *globalmanager.GlobalManager
- func (c *AppContext) GetLogger() bootstrap.LoggerWrapper
- func (c *AppContext) GetLoggerWithOrigin(originFromCfg appconfig.LogOrigin) (*zerolog.Logger, error)
- func (c *AppContext) GetMustLoggerWithOrigin(originFromCfg appconfig.LogOrigin) *zerolog.Logger
- func (c *AppContext) GetStarter() IStarter
- func (c *AppContext) GetStarterApp() ApplicationStarter
- func (c *AppContext) GetValidateWrap() validate.ValidateWrapper
- func (c *AppContext) RegisterAppState(state bool)
- func (c *AppContext) RegisterBootConfig(bc *BootConfig)
- func (c *AppContext) RegisterStarterApp(sApp ApplicationStarter)
- type ApplicationCmdRegister
- type ApplicationRegister
- type ApplicationStarter
- type ApplicationStarterOption
- type BootConfig
- type BootConfigOption
- func WithAppId(appId string) BootConfigOption
- func WithAppName(appName string) BootConfigOption
- func WithConfigPath(configPath string) BootConfigOption
- func WithCoreType(coreType string) BootConfigOption
- func WithCustomKV(key string, value any) BootConfigOption
- func WithDate(date string) BootConfigOption
- func WithFrameType(frameType string) BootConfigOption
- func WithLogPath(logPath string) BootConfigOption
- func WithTrafficCodec(codec string) BootConfigOption
- func WithVersion(version string) BootConfigOption
- type CmdContext
- func (c *CmdContext) GetConfig() appconfig.IAppConfig
- func (c *CmdContext) GetContainer() *globalmanager.GlobalManager
- func (c *CmdContext) GetDigContainer() *component.DigContainer
- func (c *CmdContext) GetLogger() bootstrap.LoggerWrapper
- func (c *CmdContext) GetLoggerWithOrigin(originFromCfg appconfig.LogOrigin) (*zerolog.Logger, error)
- func (c *CmdContext) GetMustLoggerWithOrigin(originFromCfg appconfig.LogOrigin) *zerolog.Logger
- func (c *CmdContext) GetStarter() IStarter
- func (c *CmdContext) GetStarterApp() CommandStarter
- func (c *CmdContext) GetValidateWrap() validate.ValidateWrapper
- func (c *CmdContext) RegisterStarterApp(app CommandStarter)
- type CommandGetter
- type CommandStarter
- type CommandStarterOption
- type ContextCore
- type ContextKey
- type CoreCmdStarter
- type CoreCmdStarterOption
- type CoreCtxFiberProvider
- type CoreCtxGinProvider
- type CoreCtxPManager
- type CoreStarter
- type CoreStarterFiberProvider
- type CoreStarterGinProvider
- type CoreStarterOption
- type CoreStarterPManager
- type CoreWithFiber
- func (cf *CoreWithFiber) AppCoreRun(managers ...IProviderManager)
- func (cf *CoreWithFiber) GetAppContext() IApplicationContext
- func (cf *CoreWithFiber) GetCoreApp() interface{}
- func (cf *CoreWithFiber) InitCoreApp(fs FrameStarter, managers ...IProviderManager)
- func (cf *CoreWithFiber) RegisterAppHooks(fs FrameStarter, managers ...IProviderManager)
- func (cf *CoreWithFiber) RegisterAppMiddleware(fs FrameStarter, managers ...IProviderManager)
- func (cf *CoreWithFiber) RegisterModuleInitialize(fs FrameStarter, managers ...IProviderManager)
- func (cf *CoreWithFiber) RegisterModuleSwagger(fs FrameStarter, managers ...IProviderManager)
- type CoreWithGin
- func (cg *CoreWithGin) AppCoreRun(managers ...IProviderManager)
- func (cg *CoreWithGin) GetAppContext() IApplicationContext
- func (cg *CoreWithGin) GetCoreApp() interface{}
- func (cg *CoreWithGin) InitCoreApp(fs FrameStarter, managers ...IProviderManager)
- func (cg *CoreWithGin) RegisterAppHooks(fs FrameStarter, managers ...IProviderManager)
- func (cg *CoreWithGin) RegisterAppMiddleware(fs FrameStarter, managers ...IProviderManager)
- func (cg *CoreWithGin) RegisterModuleInitialize(fs FrameStarter, managers ...IProviderManager)
- func (cg *CoreWithGin) RegisterModuleSwagger(fs FrameStarter, managers ...IProviderManager)
- type DefaultPLocation
- type DefaultPManager
- type DefaultPManagerCollection
- func (c *DefaultPManagerCollection) Add(managers ...IProviderManager) *DefaultPManagerCollection
- func (c *DefaultPManagerCollection) AndMore(customManagers ...IProviderManager) []IProviderManager
- func (c *DefaultPManagerCollection) Except(names ...string) *DefaultPManagerCollection
- func (c *DefaultPManagerCollection) List() []IProviderManager
- type DefaultPType
- type DefaultProviderCollection
- func (c *DefaultProviderCollection) Add(providers ...IProvider) *DefaultProviderCollection
- func (c *DefaultProviderCollection) AndMore(customProviders ...IProvider) []IProvider
- func (c *DefaultProviderCollection) Except(names ...string) *DefaultProviderCollection
- func (c *DefaultProviderCollection) List() []IProvider
- type DefaultStorage
- func (s *DefaultStorage) Clear()
- func (s *DefaultStorage) Delete(key string) bool
- func (s *DefaultStorage) Get(key string) (interface{}, bool)
- func (s *DefaultStorage) GetOrDefault(key string, defaultValue interface{}) interface{}
- func (s *DefaultStorage) Has(key string) bool
- func (s *DefaultStorage) Keys() []string
- func (s *DefaultStorage) Len() int
- func (s *DefaultStorage) Range(f func(key string, value interface{}) bool)
- func (s *DefaultStorage) Set(key string, value interface{})
- type ErrorHandler
- func (r *ErrorHandler) DefaultStackTraceHandler(ctx providerctx.ICoreContext, e interface{})
- func (r *ErrorHandler) ErrorHandler(ctx providerctx.ICoreContext, err error) error
- func (r *ErrorHandler) GetContext() IApplicationContext
- func (r *ErrorHandler) RecoverMiddleware(config ...RecoverConfig) any
- func (r *ErrorHandler) SetRecoverManager(manager IProviderManager)
- type FiberHouse
- func (fh *FiberHouse) RunServer(manager ...IProviderManager)
- func (fh *FiberHouse) WithCoreStarterOptions(opts ...CoreStarterOption) *FiberHouse
- func (fh *FiberHouse) WithFrameStarterOptions(opts ...FrameStarterOption) *FiberHouse
- func (fh *FiberHouse) WithPManagers(managers ...IProviderManager) *FiberHouse
- func (fh *FiberHouse) WithProviders(providers ...IProvider) *FiberHouse
- type FiberRecovery
- func (f *FiberRecovery) GetHeader(ctx providerctx.ICoreContext, key string) string
- func (f *FiberRecovery) GetHeadersJson(ctx providerctx.ICoreContext, log bootstrap.LoggerWrapper, ...) []byte
- func (f *FiberRecovery) GetParamsJson(ctx providerctx.ICoreContext, log bootstrap.LoggerWrapper, ...) []byte
- func (f *FiberRecovery) GetQueriesJson(ctx providerctx.ICoreContext, log bootstrap.LoggerWrapper, ...) []byte
- func (f *FiberRecovery) RecoverPanic(config ...RecoverConfig) any
- func (f *FiberRecovery) TraceID(ctx providerctx.ICoreContext, flag ...string) string
- type FiberRecoveryProvider
- type FrameApplication
- func (fa *FrameApplication) GetApplication() IApplication
- func (fa *FrameApplication) GetContext() IApplicationContext
- func (fa *FrameApplication) GetFrameApp() FrameStarter
- func (fa *FrameApplication) GetModule() ModuleRegister
- func (fa *FrameApplication) GetTask() TaskRegister
- func (fa *FrameApplication) InitializeCustomValidateInitializers()
- func (fa *FrameApplication) InitializeGlobalRequired()
- func (fa *FrameApplication) RegisterApplication(application ApplicationRegister)
- func (fa *FrameApplication) RegisterApplicationGlobals(managers ...IProviderManager)
- func (fa *FrameApplication) RegisterGlobalInitializers()
- func (fa *FrameApplication) RegisterGlobalsKeepalive(managers ...IProviderManager)
- func (fa *FrameApplication) RegisterLoggerWithOriginToContainer()
- func (fa *FrameApplication) RegisterModule(module ModuleRegister)
- func (fa *FrameApplication) RegisterTask(task TaskRegister)
- func (fa *FrameApplication) RegisterTaskServer(managers ...IProviderManager)
- func (fa *FrameApplication) RegisterToCtx(as ApplicationStarter)
- func (fa *FrameApplication) RegisterValidatorCustomTags()
- type FrameCmdStarter
- type FrameCmdStarterOption
- type FrameDefaultPManager
- type FrameDefaultProvider
- type FrameStarter
- type FrameStarterOption
- type GinRecovery
- func (g *GinRecovery) GetHeader(ctx providerctx.ICoreContext, key string) string
- func (g *GinRecovery) GetHeadersJson(ctx providerctx.ICoreContext, log bootstrap.LoggerWrapper, ...) []byte
- func (g *GinRecovery) GetParamsJson(ctx providerctx.ICoreContext, log bootstrap.LoggerWrapper, ...) []byte
- func (g *GinRecovery) GetQueriesJson(ctx providerctx.ICoreContext, log bootstrap.LoggerWrapper, ...) []byte
- func (g *GinRecovery) RecoverPanic(config ...RecoverConfig) any
- func (g *GinRecovery) TraceID(ctx providerctx.ICoreContext, flag ...string) string
- type GinRecoveryProvider
- type IApplication
- type IApplicationContext
- type ICommandContext
- type IContext
- type IContextCoreWrapper
- type IErrorHandler
- type IPayload
- type IProvider
- type IProviderLocation
- type IProviderManager
- type IProviderType
- type IRecover
- type IRegister
- type IStarter
- type IState
- type IStorage
- type InstanceKey
- type InstanceKeyFlag
- type JsonCodecPManager
- type JsonJCodecFiberProvider
- type JsonJCodecGinProvider
- type JsonWrapper
- type Locator
- type Modeler
- type ModuleRegister
- type PLocation
- type PType
- type PayloadBase
- type Provider
- func (p *Provider) BindToUniqueManagerIfSingleton(m IProviderManager) IProvider
- func (p *Provider) Check()
- func (p *Provider) Initialize(ctx IContext, initFunc ...ProviderInitFunc) (any, error)
- func (p *Provider) MountToParent(son ...IProvider) IProvider
- func (p *Provider) Name() string
- func (p *Provider) RegisterTo(m IProviderManager) error
- func (p *Provider) SetName(name string) IProvider
- func (p *Provider) SetStatus(status IState) IProvider
- func (p *Provider) SetTarget(t string) IProvider
- func (p *Provider) SetType(typ IProviderType) IProvider
- func (p *Provider) SetVersion(version string) IProvider
- func (p *Provider) Status() IState
- func (p *Provider) Target() string
- func (p *Provider) Type() IProviderType
- func (p *Provider) Version() string
- type ProviderError
- type ProviderInitFunc
- type ProviderLoadFunc
- type ProviderLocationRegistry
- func (r *ProviderLocationRegistry) Custom(name string) (IProviderLocation, error)
- func (r *ProviderLocationRegistry) Default(name string) (IProviderLocation, error)
- func (r *ProviderLocationRegistry) Location(name string) (IProviderLocation, error)
- func (r *ProviderLocationRegistry) MustCustom(name string) IProviderLocation
- func (r *ProviderLocationRegistry) MustDefault(name string) IProviderLocation
- func (r *ProviderLocationRegistry) MustLocation(name string) IProviderLocation
- type ProviderManager
- func (m *ProviderManager) BindToUniqueProvider(provider IProvider) IProviderManager
- func (m *ProviderManager) Check()
- func (m *ProviderManager) GetContext() IContext
- func (m *ProviderManager) GetProvider(name string) (IProvider, error)
- func (m *ProviderManager) IsUnique() bool
- func (m *ProviderManager) List() []IProvider
- func (m *ProviderManager) LoadProvider(loadFunc ...ProviderLoadFunc) (any, error)
- func (m *ProviderManager) Location() IProviderLocation
- func (m *ProviderManager) Map() map[string]IProvider
- func (m *ProviderManager) MountToParent(son ...IProviderManager) IProviderManager
- func (m *ProviderManager) Name() string
- func (m *ProviderManager) Register(provider IProvider) error
- func (m *ProviderManager) SetName(name string) IProviderManager
- func (m *ProviderManager) SetOrBindToLocation(l IProviderLocation, bind ...bool) IProviderManager
- func (m *ProviderManager) SetType(typ IProviderType) IProviderManager
- func (m *ProviderManager) Type() IProviderType
- func (m *ProviderManager) Unregister(name string) error
- type ProviderTypeRegistry
- func (r *ProviderTypeRegistry) Custom(name string) (IProviderType, error)
- func (r *ProviderTypeRegistry) Default(name string) (IProviderType, error)
- func (r *ProviderTypeRegistry) MustCustom(name string) IProviderType
- func (r *ProviderTypeRegistry) MustDefault(name string) IProviderType
- func (r *ProviderTypeRegistry) MustType(name string) IProviderType
- func (r *ProviderTypeRegistry) Type(name string) (IProviderType, error)
- type RecoverConfig
- type RecoveryPManager
- type RegisterInitializerFuncType
- type RegisterKeyFuncType
- type Repository
- type RepositoryLocator
- type RespInfoMsgpackProvider
- type RespInfoPManager
- type RespInfoProtobufProvider
- type ResponseWrap
- func (r *ResponseWrap) ErrorCustom(code int, message string) response.IResponse
- func (r *ResponseWrap) From(resp response.IResponse, needToRelease bool) response.IResponse
- func (r *ResponseWrap) Release()
- func (r *ResponseWrap) Reset(code int, msg string, data interface{}) response.IResponse
- func (r *ResponseWrap) SendWithCtx(c providerctx.ICoreContext, status ...int) error
- func (r *ResponseWrap) SuccessWithData(data ...interface{}) response.IResponse
- type Service
- type ServiceLocator
- type SonicJCodecFiberProvider
- type SonicJCodecGinProvider
- type State
- type TaskDispatcher
- type TaskHandlerMap
- type TaskRegister
- type TaskWorker
- func (tk *TaskWorker) GetContext() IContext
- func (tk *TaskWorker) GetMux() *asynq.ServeMux
- func (tk *TaskWorker) GetServer() *asynq.Server
- func (tk *TaskWorker) Handle(pattern string, handler asynq.Handler)
- func (tk *TaskWorker) HandleFunc(pattern string, handler func(context.Context, *asynq.Task) error)
- func (tk *TaskWorker) RegisterHandlers(handlers TaskHandlerMap)
- func (tk *TaskWorker) RunAsync() (err error)
- func (tk *TaskWorker) RunServer(sync ...bool)
- func (tk *TaskWorker) RunSync() error
- type WebApplication
Constants ¶
const ( DefaultLocationStart uint8 = 0 DefaultLocationEnd uint8 = 63 CustomLocationStart uint8 = 64 CustomLocationEnd uint8 = 255 )
const ( DefaultTypeStart uint8 = 0 DefaultTypeEnd uint8 = 63 CustomTypeStart uint8 = 64 CustomTypeEnd uint8 = 255 )
Variables ¶
var ( StatePending = new(State).Set(0, "pending") StateLoaded = new(State).Set(1, "loaded") StateSkipped = new(State).Set(1, "skipped") StateFailed = new(State).Set(1, "failed") )
状态变量 pending、loaded、skipped、failed
var ( ErrProviderAlreadyExists = &ProviderError{msg: "provider already exists"} ErrProviderNotFound = &ProviderError{msg: "provider not found"} )
定义提供者错误类型
var RecoverConfigDefault = RecoverConfig{ Next: nil, EnableStackTrace: false, StackTraceHandler: func(c providerctx.ICoreContext, e interface{}) {}, Logger: nil, Stdout: true, DebugMode: false, }
ConfigDefault 默认配置
Functions ¶
func CoreContext ¶
func CoreContext(c any) providerCtx.ICoreContext
CoreContext 全局函数,接收任意类型参数(不同框架的上下文),返回核心上下文接口 内部核心上下文提供者管理器自动依据启动配置的核心参数CoreType决定返回哪种核心上下文实现JSON响应
func GetErrOrNoDocuments ¶
GetErrOrNoDocuments 检查错误是否为 mongo.ErrNoDocuments,若是则返回自定义错误
func GetInstance ¶
GetInstance 从全局管理获取单例
e.g.
s, err := fiberhouse.GetInstance[*service.TestService](h.KeyNSService)
if err != nil {
}
func GetJsonIndent ¶
func GetJsonIndent(appCtx IApplicationContext, s string, log bootstrap.LoggerWrapper, jsonEnCoder func(interface{}) ([]byte, error), traceId string) []byte
GetJsonIndent 从堆栈字符串获取堆栈行并转换为JSON缩进格式字节切片
func GetMustInstance ¶
GetMustInstance 从全局管理获取单例,若不存在则panic
func GetNamespace ¶
GetNamespace 支持自定義key前綴,儅ns為空切片時替代ns。儅ns有值時使用ns返回
func GetNoDocumentsError ¶
GetNoDocumentsError 检查错误是否为 mongo.ErrNoDocuments,若是则返回零值和自定义错误
func MustRecoverMiddleware ¶
MustRecoverMiddleware 尝试将任意类型断言为指定类型 T,若失败则 panic
func RecoverMiddleware ¶
RecoverMiddleware 尝试将任意类型断言为指定类型 T,若成功则返回该类型实例,否则返回错误
func RecoverPanicInternal ¶
func RecoverPanicInternal(pCtx providerctx.ICoreContext, cfg RecoverConfig)
RecoverPanicInternal 全局恢复panic函数,用于defer fn()
func RegisterKeyInitializerFunc ¶
func RegisterKeyInitializerFunc(keyName string, Initializer globalmanager.InitializerFunc) (key string)
RegisterKeyInitializerFunc 按指定key注册全局对象到全局管理器,同时返回keyName
key的命名空间前缀规则同 RegisterKeyName
func RegisterKeyName ¶
RegisterKeyName 定义和拼接全局对象注册带命名空间的key,并返回注册key的名称
namespace前缀规则: 1. 命名空间作为注册实例key前缀的一部分,起于模块子系统名字路径,表明对象属于其所在的模块/子系统,如"common-module.",表示common-module的模块名/子系统名前缀; 2. 模块名内部继续按照路径名/包名称用点号进行拼接: 如example-module模块内的模型model, 完整的命名空间为example-module.model.xxx; 3. 如ExampleModel类要注册进全局管理器,最终组合的key名称为: example-module.model.ExampleModel;
fiberhouse.RegisterKeyName() 方法会自动帮你组合命名空间前缀和组件名称,生成完整的注册key名称;其中fiberhouse.GetNamespace()方法会帮你组合命名空间前缀部分,接受一个名字空间的切片,内部自动 按"."拼接名字空间后作为默认值,但当ns参数存在值时,由ns作为的命名空间前缀.
4. 组件注册到全局管理器的key名称,必须唯一,否则会报错; 5. 组件注册到全局管理器的key名称,必须符合标识符命名规范,只能包含字母、数字、下划线,且只能字母或下划线开头.
func RunApplicationStarter ¶
func RunApplicationStarter(starter ApplicationStarter, managers ...IProviderManager)
RunApplicationStarter 接受实现了ApplicationStarter接口的实例,执行应用启动流程
func ValidateException ¶
func ValidateException() *exception.ValidateException
ValidateException 获取验证异常响应对象
Types ¶
type Api ¶
type Api struct {
Ctx IContext
// contains filtered or unexported fields
}
Api 实现了ApiLocator接口,相当于MVC的Controller层 用于被具体的Api处理器实例继承,如UserApi、ProductApi等 主要包含服务名称、应用上下文、获取实例等基础方法
func NewApi ¶
func NewApi(ctx IApplicationContext) *Api
func (*Api) GetInstance ¶
GetInstance 获取实例(从全局管理器获取具体的单例)
type AppContext ¶
type AppContext struct {
IStorage // 内存键值存储接口实现
// contains filtered or unexported fields
}
AppContext Web应用上下文实现
func (*AppContext) GetBootConfig ¶
func (c *AppContext) GetBootConfig() *BootConfig
GetBootConfig 获取应用启动配置
func (*AppContext) GetConfig ¶
func (c *AppContext) GetConfig() appconfig.IAppConfig
GetConfig 获取全局配置
func (*AppContext) GetContainer ¶
func (c *AppContext) GetContainer() *globalmanager.GlobalManager
GetContainer 获取全局管理容器实例
func (*AppContext) GetLogger ¶
func (c *AppContext) GetLogger() bootstrap.LoggerWrapper
GetLogger 获取全局日志器
func (*AppContext) GetLoggerWithOrigin ¶
func (c *AppContext) GetLoggerWithOrigin(originFromCfg appconfig.LogOrigin) (*zerolog.Logger, error)
GetLoggerWithOrigin 依据配置文件预定义LogOrigin来源,从全局管理器获取指定来源的子日志器单例
func (*AppContext) GetMustLoggerWithOrigin ¶
func (c *AppContext) GetMustLoggerWithOrigin(originFromCfg appconfig.LogOrigin) *zerolog.Logger
GetMustLoggerWithOrigin 依据配置文件预定义LogOrigin来源,从全管理器获取指定来源的子日志器单例
func (*AppContext) GetStarter ¶
func (c *AppContext) GetStarter() IStarter
GetStarter 获取IStarter启动器实例(框架Web应用启动器实例FrameApplication)
注意:IStarter接口是为了兼容AppContext(web应用上下文)和CmdContext(命令行应用上下文)两种上下文抽象出公共的方法的实现
但实际上在Web应用上下文中,IStarter接口的实现是 ApplicationStarter Web应用启动器, 在命令行上下文中,IStarter接口的实现是 CommandStarter 命令行启动器 这两者在实际使用中是不同的,AppContext作用的是FrameApplication(web框架应用启动器),而CmdContext作用的是CommandApplication(CMD命令行应用启动器), 但为了保持接口一致性,这里仍然使用IStarter接口, 在实际应用类别中,开发者需要根据上下文类型来判断具体的实现,并断言成具体的实现,以获取除公共方法外的具体方法的调用
func (*AppContext) GetStarterApp ¶
func (c *AppContext) GetStarterApp() ApplicationStarter
GetStarterApp 获取框架启动器实例(FrameApplication)
func (*AppContext) GetValidateWrap ¶
func (c *AppContext) GetValidateWrap() validate.ValidateWrapper
GetValidateWrap 获取全局验证包装器
func (*AppContext) RegisterAppState ¶
func (c *AppContext) RegisterAppState(state bool)
RegisterAppState 注册应用启动状态
func (*AppContext) RegisterBootConfig ¶
func (c *AppContext) RegisterBootConfig(bc *BootConfig)
RegisterBootConfig 注册应用启动配置
func (*AppContext) RegisterStarterApp ¶
func (c *AppContext) RegisterStarterApp(sApp ApplicationStarter)
RegisterStarterApp 挂载框架启动器app
type ApplicationCmdRegister ¶
type ApplicationCmdRegister interface {
IRegister
IApplication
// GetContext 返回全局上下文
GetContext() ICommandContext
// RegisterGlobalErrHandler 注册全局错误处理器到核心应用
RegisterGlobalErrHandler(core interface{})
// RegisterCommands 收集命令列表并注册到核心应用
RegisterCommands(core interface{})
// RegisterCoreGlobalOptional 注册应用核心的全局可选项
RegisterCoreGlobalOptional(core interface{})
// RegisterApplicationGlobals 注册应用预定义的全局对象实例到全局管理器容器中
RegisterApplicationGlobals()
}
ApplicationCmdRegister 命令行应用注册器 由用户自定义的,在CMD应用启动器启动时,实现必要的应用逻辑, 并注册绑定到CommandStarter的application属性,由启动器调用完成应用初始化
type ApplicationRegister ¶
type ApplicationRegister interface {
IRegister
IApplication
// GetContext 返回全局上下文
GetContext() IApplicationContext
// ConfigGlobalInitializers 配置并返回全局对象初始化器的列表映射
ConfigGlobalInitializers() globalmanager.InitializerMap
// ConfigRequiredGlobalKeys 配置并返回需要初始化的全局对象keyName的切片
ConfigRequiredGlobalKeys() []globalmanager.KeyName
// ConfigCustomValidateInitializers 配置自定义语言验证器初始化器的切片
//见框架组件: validate.Wrap
ConfigCustomValidateInitializers() []validate.ValidateInitializer
// ConfigValidatorCustomTags 配置并返回需要注册的验证器自定义tag及翻译的切片(当验证tag缺乏所需语言的翻译时,可以自定义tag翻译)
//见框架组件: validate.RegisterValidatorTagFunc
ConfigValidatorCustomTags() []validate.RegisterValidatorTagFunc
// RegisterAppMiddleware 注册应用级别中间件
RegisterAppMiddleware(cs CoreStarter)
// RegisterCoreHook 注册核心应用(coreApp)的生命周期钩子
RegisterCoreHook(cs CoreStarter)
}
ApplicationRegister 应用注册器
在应用启动阶段由启动器调用,用于: 1. 注册应用的自定义配置、依赖与初始化逻辑; 2. 将注册器实例绑定到 ApplicationStarter 的 application 字段,供启动流程使用。
type ApplicationStarter ¶
type ApplicationStarter interface {
FrameStarter
CoreStarter
}
ApplicationStarter 定义框架应用启动器的接口(定义启动方法和启动流程)
type ApplicationStarterOption ¶
type ApplicationStarterOption func(starter ApplicationStarter)
ApplicationStarterOption 定义应用启动器选项函数类型
type BootConfig ¶
type BootConfig struct {
// AppId 应用唯一标识符
AppId string
// AppName 应用名称
AppName string
// Version 应用版本
Version string
// BuildDate 应用构建日期
Date string
// FrameType 框架启动器的类型标识,由提供者的Target属性区分,如FiberHouse默认提供的"DefaultFrameStarter"、其他更多FrameStarter实现的标识
// 见constant.ProviderTypeDefaultFrameStarter
FrameType string
// CoreType 核心启动器的类型标识,由提供者的target属性区分,如FiberHouse提供的"fiber"、"gin"、其他选择
CoreType string
// TrafficCodec 传输编解码器类型标识,由提供者的name属性区分,如"std_json_codec"、"sonic_json_codec"、"go_json_codec"、其他选择如protobuf等
TrafficCodec string
// 是否启用二进制协议支持,如Protobuf、MsgPack等
EnableBinaryProtocolSupport bool
// ConfigPath 全局应用配置文件的路径
ConfigPath string
// LogPath 全局应用日志文件的路径
LogPath string
// contains filtered or unexported fields
}
BootConfig 启动配置
func (*BootConfig) GetMustValue ¶
func (bc *BootConfig) GetMustValue(key string) any
GetMustValue 获取键值存储中的值,键不存在时panic
func (*BootConfig) GetValue ¶
func (bc *BootConfig) GetValue(key string) (any, error)
GetValue 获取键值存储中的值
func (*BootConfig) WithCustom ¶
func (bc *BootConfig) WithCustom(key string, value any) *BootConfig
WithCustom 初始化时设置键值对,仅在未封闭前有效,支持链式调用
type BootConfigOption ¶
type BootConfigOption func(boot *BootConfig)
BootConfigOption 定义启动配置选项函数类型
func WithConfigPath ¶
func WithConfigPath(configPath string) BootConfigOption
WithConfigPath 设置配置文件路径
func WithTrafficCodec ¶
func WithTrafficCodec(codec string) BootConfigOption
WithTrafficCodec 设置JSON编解码器类型
type CmdContext ¶
type CmdContext struct {
IStorage // 内存键值存储接口实现
Cfg appconfig.IAppConfig
// contains filtered or unexported fields
}
CmdContext 命令行应用上下文实现
func (*CmdContext) GetConfig ¶
func (c *CmdContext) GetConfig() appconfig.IAppConfig
GetConfig 获取全局配置
func (*CmdContext) GetContainer ¶
func (c *CmdContext) GetContainer() *globalmanager.GlobalManager
GetContainer 获取全局管理容器实例
func (*CmdContext) GetDigContainer ¶
func (c *CmdContext) GetDigContainer() *component.DigContainer
GetDigContainer 获取依赖注入容器
func (*CmdContext) GetLogger ¶
func (c *CmdContext) GetLogger() bootstrap.LoggerWrapper
GetLogger 获取全局日志器
func (*CmdContext) GetLoggerWithOrigin ¶
func (c *CmdContext) GetLoggerWithOrigin(originFromCfg appconfig.LogOrigin) (*zerolog.Logger, error)
GetLoggerWithOrigin 依据配置文件预定义LogOrigin来源,从全管理器获取指定来源的子日志器单例
func (*CmdContext) GetMustLoggerWithOrigin ¶
func (c *CmdContext) GetMustLoggerWithOrigin(originFromCfg appconfig.LogOrigin) *zerolog.Logger
GetMustLoggerWithOrigin 依据配置文件预定义LogOrigin来源,从全管理器获取指定来源的子日志器单例
func (*CmdContext) GetStarter ¶
func (c *CmdContext) GetStarter() IStarter
GetStarter 获取IStarter启动器实例(框架命令行启动器实例CommandApplication)
注意:IStarter接口是为了兼容CmdContext(命令行应用上下文)和AppContext(web应用上下文)两种上下文抽象出公共的方法的实现
但实际上在命令行上下文中,IStarter接口的实现是 CommandStarter 命令行启动器, 在Web应用上下文中,IStarter接口的实现是 ApplicationStarter Web应用启动器 这两者在实际使用中是不同的,CmdContext作用的是CommandApplication(CMD命令行应用启动器),而AppContext作用的是FrameApplication(web框架应用启动器), 但为了保持接口一致性,这里仍然使用IStarter接口, 在实际应用类别中,开发者需要根据上下文类型来判断具体的实现,并断言成具体的实现,以获取除公共方法外的具体方法的调用
func (*CmdContext) GetStarterApp ¶
func (c *CmdContext) GetStarterApp() CommandStarter
GetStarterApp 获取框架启动器实例
func (*CmdContext) GetValidateWrap ¶
func (c *CmdContext) GetValidateWrap() validate.ValidateWrapper
GetValidateWrap 获取全局验证包装器
func (*CmdContext) RegisterStarterApp ¶
func (c *CmdContext) RegisterStarterApp(app CommandStarter)
RegisterStarterApp 挂载框架启动器app
type CommandGetter ¶
type CommandGetter interface {
GetCommand() interface{}
}
CommandGetter 命令获取器接口,定义了获取单个命令的方法
type CommandStarter ¶
type CommandStarter interface {
FrameCmdStarter
CoreCmdStarter
}
CommandStarter 命令行脚本启动器接口,定义命令行程序启动流程
type CommandStarterOption ¶
type CommandStarterOption func(starter CommandStarter)
CommandStarterOption 定义命令启动器选项函数类型
type ContextCore ¶
type ContextCore struct {
// contains filtered or unexported fields
}
func (*ContextCore) WithAppCtx ¶
func (c *ContextCore) WithAppCtx(appCtx IContext) providerCtx.ICoreContext
WithAppCtx 接收应用上下文参数,返回核心上下文接口,内部核心上下文提供者管理器自动依据启动配置的核心参数CoreType决定返回哪种核心上下文实现JSON响应
type ContextKey ¶
type ContextKey string
ContextKey 用于在context.Context中存储和检索应用上下文对象
const ( // ContextKeyAppCtx 用于在context.Context中存储应用上下文对象的键 ContextKeyAppCtx ContextKey = "AppContext" )
type CoreCmdStarter ¶
type CoreCmdStarter interface {
// GetAppContext 获取应用上下文
GetAppContext() ICommandContext
// InitCoreApp 初始化核心命令行应用
InitCoreApp()
// RegisterCoreApp 注册底层核心命令行应用实例
RegisterCoreApp(interface{})
// RegisterGlobalErrHandler 注册全局错误处理器
RegisterGlobalErrHandler(fca FrameCmdStarter)
// RegisterCommands 收集命令列表并注册到核心应用
RegisterCommands(fca FrameCmdStarter)
// RegisterCoreGlobalOptional 注册应用核心的全局初始化,如果有必要
RegisterCoreGlobalOptional(fca FrameCmdStarter)
// AppCoreRun 运行核心命令行应用
AppCoreRun() error
// GetCoreCmdApp 获取核心命令行应用实例
GetCoreCmdApp() CoreCmdStarter
}
type CoreCmdStarterOption ¶
type CoreCmdStarterOption func(core CoreCmdStarter)
CoreCmdStarterOption 核心命令行启动器选项函数类型
type CoreCtxFiberProvider ¶
type CoreCtxFiberProvider struct {
IProvider
}
CoreCtxFiberProvider Fiber 框架核心上下文提供者
func NewCoreCtxFiberProvider ¶
func NewCoreCtxFiberProvider() *CoreCtxFiberProvider
func (*CoreCtxFiberProvider) Initialize ¶
func (p *CoreCtxFiberProvider) Initialize(ctx IContext, initFunc ...ProviderInitFunc) (any, error)
Initialize 初始化 Fiber 框架核心上下文提供者
type CoreCtxGinProvider ¶
type CoreCtxGinProvider struct {
IProvider
}
CoreCtxGinProvider Gin 框架上下文提供者
func NewCoreCtxGinProvider ¶
func NewCoreCtxGinProvider() *CoreCtxGinProvider
func (*CoreCtxGinProvider) Initialize ¶
func (p *CoreCtxGinProvider) Initialize(ctx IContext, initFunc ...ProviderInitFunc) (any, error)
type CoreCtxPManager ¶
type CoreCtxPManager struct {
IProviderManager
}
CoreCtxPManager 核心上下文提供者管理器
func NewCoreCtxPManager ¶
func NewCoreCtxPManager(appCtx IApplicationContext) *CoreCtxPManager
NewCoreCtxPManager 创建核心上下文提供者管理器
func NewCoreCtxPManagerOnce ¶
func NewCoreCtxPManagerOnce(appCtx IContext) *CoreCtxPManager
NewCoreCtxPManagerOnce 单例模式创建核心上下文提供者管理器
func (*CoreCtxPManager) LoadProvider ¶
func (m *CoreCtxPManager) LoadProvider(loadFunc ...ProviderLoadFunc) (any, error)
LoadProvider 重载加载提供者
func (*CoreCtxPManager) MountToParent ¶
func (m *CoreCtxPManager) MountToParent(son ...IProviderManager) IProviderManager
MountToParent 重载挂载到父级提供者管理器 注意: 该方法的重载实现不是必须的,当NewXXX()内调用基类的MountToParent方法时,则无需重载该方法,二选一
type CoreStarter ¶
type CoreStarter interface {
// GetAppContext 获取应用上下文
// 返回全局应用上下文,提供配置、日志器、全局容器等基础设施访问
GetAppContext() IApplicationContext
// InitCoreApp 初始化核心应用
// 创建并配置底层HTTP服务实例(如Fiber应用)
InitCoreApp(fs FrameStarter, managers ...IProviderManager)
// RegisterAppMiddleware 注册应用级中间件
// 注册应用级别的中间件,如错误恢复、请求日志、CORS等全局中间件
RegisterAppMiddleware(fs FrameStarter, managers ...IProviderManager)
// RegisterModuleSwagger 注册模块Swagger文档
// 根据配置决定是否注册Swagger API文档路由
RegisterModuleSwagger(fs FrameStarter, managers ...IProviderManager)
// RegisterAppHooks 注册应用钩子函数
// 注册应用生命周期钩子函数,如启动、关闭时的回调处理
RegisterAppHooks(fs FrameStarter, managers ...IProviderManager)
// RegisterModuleInitialize 注册模块初始化
// 执行模块级别的初始化,包括模块中间件和路由处理器的注册
RegisterModuleInitialize(fs FrameStarter, managers ...IProviderManager)
// AppCoreRun 启动应用核心运行
// 启动HTTP服务监听,处理优雅关闭信号
AppCoreRun(...IProviderManager)
// GetCoreApp 获取核心实例
GetCoreApp() interface{}
}
CoreStarter 应用核心启动器接口
func NewCoreWithFiber ¶
func NewCoreWithFiber(ctx IApplicationContext, opts ...CoreStarterOption) CoreStarter
NewCoreWithFiber 创建一个应用核心启动器对象
func NewCoreWithGin ¶
func NewCoreWithGin(ctx IApplicationContext, opts ...CoreStarterOption) CoreStarter
NewCoreWithGin 创建一个基于Gin的应用核心启动器对象
type CoreStarterFiberProvider ¶
type CoreStarterFiberProvider struct {
IProvider
}
CoreStarterFiberProvider 核心Fiber提供者
func NewCoreStarterFiberProvider ¶
func NewCoreStarterFiberProvider() *CoreStarterFiberProvider
func (*CoreStarterFiberProvider) Initialize ¶
func (p *CoreStarterFiberProvider) Initialize(ctx IContext, initFunc ...ProviderInitFunc) (any, error)
Initialize 重载初始化核心Fiber提供者
type CoreStarterGinProvider ¶
type CoreStarterGinProvider struct {
IProvider
}
CoreStarterGinProvider 核心Gin提供者
func NewCoreStarterGinProvider ¶
func NewCoreStarterGinProvider() *CoreStarterGinProvider
func (*CoreStarterGinProvider) Initialize ¶
func (p *CoreStarterGinProvider) Initialize(ctx IContext, initFunc ...ProviderInitFunc) (any, error)
Initialize 重载初始化核心Gin提供者
type CoreStarterOption ¶
type CoreStarterOption func(core CoreStarter)
CoreStarterOption 定义核心启动器选项函数类型
type CoreStarterPManager ¶
type CoreStarterPManager struct {
IProviderManager
}
CoreStarterPManager 核心启动器提供者管理器
func NewCoreStarterPManager ¶
func NewCoreStarterPManager(appCtx IApplicationContext) *CoreStarterPManager
func (*CoreStarterPManager) LoadProvider ¶
func (m *CoreStarterPManager) LoadProvider(loadFunc ...ProviderLoadFunc) (any, error)
LoadProvider 重载加载提供者
func (*CoreStarterPManager) MountToParent ¶
func (m *CoreStarterPManager) MountToParent(son ...IProviderManager) IProviderManager
MountToParent 重载挂载到父级提供者管理器 注意: 该方法的重载实现不是必须的,当NewXXX()内调用基类的MountToParent方法时,则无需重载该方法,二选一
type CoreWithFiber ¶
CoreWithFiber 应用核心启动器
func (*CoreWithFiber) AppCoreRun ¶
func (cf *CoreWithFiber) AppCoreRun(managers ...IProviderManager)
AppCoreRun 监听核心应用套接字
func (*CoreWithFiber) GetAppContext ¶
func (cf *CoreWithFiber) GetAppContext() IApplicationContext
GetAppContext 获取应用上下文
func (*CoreWithFiber) GetCoreApp ¶
func (cf *CoreWithFiber) GetCoreApp() interface{}
GetCoreApp 获取应用核心实例
func (*CoreWithFiber) InitCoreApp ¶
func (cf *CoreWithFiber) InitCoreApp(fs FrameStarter, managers ...IProviderManager)
InitCoreApp 初始化应用核心(框架应用基于 fiber.App)
func (*CoreWithFiber) RegisterAppHooks ¶
func (cf *CoreWithFiber) RegisterAppHooks(fs FrameStarter, managers ...IProviderManager)
RegisterAppHooks 注册核心应用的生命周期钩子函数(如果存在)
func (*CoreWithFiber) RegisterAppMiddleware ¶
func (cf *CoreWithFiber) RegisterAppMiddleware(fs FrameStarter, managers ...IProviderManager)
RegisterAppMiddleware 注册应用级的中间件
func (*CoreWithFiber) RegisterModuleInitialize ¶
func (cf *CoreWithFiber) RegisterModuleInitialize(fs FrameStarter, managers ...IProviderManager)
RegisterModuleInitialize 注册应用模块/子系统级的中间件、路由处理器、swagger、etc...
func (*CoreWithFiber) RegisterModuleSwagger ¶
func (cf *CoreWithFiber) RegisterModuleSwagger(fs FrameStarter, managers ...IProviderManager)
RegisterModuleSwagger 注册模块/子系统级的swagger
type CoreWithGin ¶
type CoreWithGin struct {
OptionFuncList []gin.OptionFunc
// contains filtered or unexported fields
}
CoreWithGin 基于Gin的核心应用启动器
func (*CoreWithGin) AppCoreRun ¶
func (cg *CoreWithGin) AppCoreRun(managers ...IProviderManager)
AppCoreRun 启动Gin应用并监听信号
func (*CoreWithGin) GetAppContext ¶
func (cg *CoreWithGin) GetAppContext() IApplicationContext
GetAppContext 获取应用上下文
func (*CoreWithGin) GetCoreApp ¶
func (cg *CoreWithGin) GetCoreApp() interface{}
GetCoreApp 获取核心Gin引擎实例
func (*CoreWithGin) InitCoreApp ¶
func (cg *CoreWithGin) InitCoreApp(fs FrameStarter, managers ...IProviderManager)
InitCoreApp 初始化应用核心
func (*CoreWithGin) RegisterAppHooks ¶
func (cg *CoreWithGin) RegisterAppHooks(fs FrameStarter, managers ...IProviderManager)
RegisterAppHooks 注册核心应用的生命周期钩子函数
func (*CoreWithGin) RegisterAppMiddleware ¶
func (cg *CoreWithGin) RegisterAppMiddleware(fs FrameStarter, managers ...IProviderManager)
RegisterAppMiddleware 注册应用级的中间件
func (*CoreWithGin) RegisterModuleInitialize ¶
func (cg *CoreWithGin) RegisterModuleInitialize(fs FrameStarter, managers ...IProviderManager)
RegisterModuleInitialize 注册应用模块/子系统级的中间件、路由处理器等
func (*CoreWithGin) RegisterModuleSwagger ¶
func (cg *CoreWithGin) RegisterModuleSwagger(fs FrameStarter, managers ...IProviderManager)
RegisterModuleSwagger 注册模块/子系统级的swagger
type DefaultPLocation ¶
type DefaultPLocation struct {
ZeroLocation IProviderLocation // 初始化默认位点/零位点/保留为初始化状态
LocationAdaptCoreCtxChoose IProviderLocation // 适配核心上下文选择位点(用于统一输出响应时屏蔽不同核心引擎上下文差异)
LocationBootStrapConfig IProviderLocation // 引导配置阶段位点
LocationFrameStarterOptionInit IProviderLocation // 框架启动器选项初始化位点
LocationCoreStarterOptionInit IProviderLocation // 核心启动器选项初始化位点
LocationFrameStarterCreate IProviderLocation // 创建框架启动器位点
LocationCoreStarterCreate IProviderLocation // 创建核心引擎启动器位点
LocationGlobalInit IProviderLocation // 全局初始化位点
LocationGlobalKeepaliveInit IProviderLocation // 全局对象保活初始化位点
LocationCoreEngineInit IProviderLocation // 核心引擎初始化位点
LocationCoreHookInit IProviderLocation // 核心引擎钩子(如有)初始化位点
LocationAppMiddlewareInit IProviderLocation // 注册应用中间件初始化位点
LocationModuleMiddlewareInit IProviderLocation // 注册模块中间件初始化位点
LocationRouteRegisterInit IProviderLocation // 注册路由初始化位点
LocationTaskServerInit IProviderLocation // 任务服务器初始化位点
LocationModuleSwaggerInit IProviderLocation // 注册Swagger初始化位点
LocationServerRunBefore IProviderLocation // 服务运行前位点
LocationServerRun IProviderLocation // 服务运行位点
LocationServerRunAfter IProviderLocation // 服务运行后位点
LocationServerShutdownBefore IProviderLocation // 服务关闭前位点
LocationServerShutdown IProviderLocation // 服务关闭位点
LocationServerShutdownAfter IProviderLocation // 服务关闭后位点
LocationResponseInfoInit IProviderLocation // 响应信息初始化位点
}
DefaultPLocation 预定义的默认位点对象集合
位点用于标识提供者的执行位置,相同位点的管理器会被收集并按顺序执行 1. LocationXXXBefore 在某个阶段之前执行 2. LocationXXXAfter 在某个阶段之后执行 3. LocationXXXInit 在某个初始化阶段执行 4. LocationXXXRun 在XXX运行阶段执行 5. LocationXXXCreate 在XXX创建阶段执行 6. 其他,由开发者自定义
func ProviderLocationDefault ¶
func ProviderLocationDefault() *DefaultPLocation
ProviderLocationDefault 获取预定义的默认位点对象集合(单例)
type DefaultPManager ¶
type DefaultPManager struct {
IProviderManager
}
DefaultPManager 默认提供者管理器,实现默认的提供者加载逻辑
func NewDefaultPManager ¶
func NewDefaultPManager(ctx IContext) *DefaultPManager
NewDefaultPManager 创建一个默认提供者管理器实例,实现默认的提供者加载逻辑
func (*DefaultPManager) LoadProvider ¶
func (m *DefaultPManager) LoadProvider(loadFunc ...ProviderLoadFunc) (any, error)
func (*DefaultPManager) MountToParent ¶
func (m *DefaultPManager) MountToParent(son ...IProviderManager) IProviderManager
MountToParent 重载挂载到父级提供者管理器 注意: 该方法的重载实现不是必须的,当NewXXX()内调用基类的MountToParent方法时,则无需重载该方法,二选一
type DefaultPManagerCollection ¶
type DefaultPManagerCollection struct {
// contains filtered or unexported fields
}
DefaultPManagerCollection 默认提供者管理器集合
func DefaultPManagers ¶
func DefaultPManagers(ctx IApplicationContext) *DefaultPManagerCollection
DefaultPManagers 获取默认提供者管理器集合(单例)
func (*DefaultPManagerCollection) Add ¶
func (c *DefaultPManagerCollection) Add(managers ...IProviderManager) *DefaultPManagerCollection
Add 添加默认提供者管理器到集合, 返回自身以支持链式调用
func (*DefaultPManagerCollection) AndMore ¶
func (c *DefaultPManagerCollection) AndMore(customManagers ...IProviderManager) []IProviderManager
AndMore 将默认提供者管理器和传入的自定义提供者管理器合并返回一个新的管理器切片列表
func (*DefaultPManagerCollection) Except ¶
func (c *DefaultPManagerCollection) Except(names ...string) *DefaultPManagerCollection
Except 排除指定名称的提供者管理器,返回自身以支持链式调用
func (*DefaultPManagerCollection) List ¶
func (c *DefaultPManagerCollection) List() []IProviderManager
List 获取默认提供者管理器列表(返回副本)
type DefaultPType ¶
type DefaultPType struct {
ZeroType IProviderType // 默认零值类型
GroupDefaultManagerType IProviderType // 默认管理器类型组,该类型提供者都注册进默认管理器进行处理
GroupTrafficCodecChoose IProviderType // 传输编解码器选择组,该类型提供者中仅选择一个进行流量编解码处理
GroupCoreEngineChoose IProviderType // 核心引擎选择组,该类型提供者中仅选择一个进行核心引擎处理
GroupMiddlewareRegisterType IProviderType // 中间件注册类型组,该类型提供者都注册进中间件链进行处理
GroupRouteRegisterType IProviderType // 路由注册类型组,该类型提供者都注册进路由表进行处理
GroupCoreHookChoose IProviderType // 核心钩子选择组,该类型提供者中仅选择一个进行核心钩子处理
GroupFrameStarterChoose IProviderType // 框架启动器选择组,该类型提供者中仅选择一个进行框架启动处理
GroupCoreStarterChoose IProviderType // 核心启动器选择组,该类型提供者中仅选择一个进行核心启动处理
GroupProviderAutoRun IProviderType // 提供者自动运行组,该类型提供者都自动运行一次进行处理
GroupCoreContextChoose IProviderType // 核心上下文选择组,该类型提供者中仅选择一个进行核心上下文处理
GroupFrameStarterOptsInitUnique IProviderType // 框架启动器选项初始化唯一组,该类型提供者中仅唯一绑定一个管理器,并由该唯一的提供者进行处理
GroupCoreStarterOptsInitUnique IProviderType // 核心启动器选项初始化唯一组,该类型提供者中仅唯一绑定一个管理器,并由该唯一的提供者进行处理
GroupRecoverMiddlewareChoose IProviderType // 恢复中间件选择组,该类型提供者中仅选择一个进行恢复中间件处理(根据核心类型选择)
GroupResponseInfoChoose IProviderType // 响应信息选择组,该类型提供者中仅选择一个进行响应信息处理(根据name存储的http内容类型来选择)
}
DefaultPType 预定义的默认类型对象集合
提供者类型分组的默认逻辑,同一类型的提供者仅允许注册进同一类型的管理器中并加载处理 1. GroupXXXChoose Choose结尾,表示选择其中一个提供者执行(仅符合Target()单个提供者执行,即匹配到提供者则中断后续提供者初始化)(比如切换核心引擎、切换编解码器等只取管理器注册的提供者列表中的一个提供者) 2. GroupYYYType Type结尾,表示受Target、Name、Version等约束条件限制,符合条件的多个提供者都可以执行(比如多个中间件注册、多个路由组注册的提供者都应用执行) 3. GroupZZZAutoRun AutoRun结尾,表示自动运行,不受条件约束,所有注册的提供者均执行一次(比如全局对象注册、默认启动对象初始化的提供者) 4. GroupWWWUnique Unique结尾,表示有且只有一个提供者存在和执行(比如框架启动器选项初始化提供者,唯一绑定管理器,管理器将无法注册更多的提供者) 5. 其他自定义,由开发者自行约定和实现
func ProviderTypeDefault ¶
func ProviderTypeDefault() *DefaultPType
ProviderTypeDefault 获取预定义的默认类型对象集合(单例)
type DefaultProviderCollection ¶
type DefaultProviderCollection struct {
// contains filtered or unexported fields
}
DefaultProviderCollection 默认提供者集合
func DefaultProviders ¶
func DefaultProviders() *DefaultProviderCollection
DefaultProviders 获取默认提供者集合(单例)
func (*DefaultProviderCollection) Add ¶
func (c *DefaultProviderCollection) Add(providers ...IProvider) *DefaultProviderCollection
Add 添加默认提供者到集合
func (*DefaultProviderCollection) AndMore ¶
func (c *DefaultProviderCollection) AndMore(customProviders ...IProvider) []IProvider
AndMore 将默认提供者和传入的自定义提供者合并返回一个新的提供者切片列表
func (*DefaultProviderCollection) Except ¶
func (c *DefaultProviderCollection) Except(names ...string) *DefaultProviderCollection
Except 排除指定名称的提供者,返回自身以支持链式调用
func (*DefaultProviderCollection) List ¶
func (c *DefaultProviderCollection) List() []IProvider
List 获取默认提供者列表(返回副本)
type DefaultStorage ¶
type DefaultStorage struct {
// contains filtered or unexported fields
}
DefaultStorage 默认的内存键值存储实现
func (*DefaultStorage) Get ¶
func (s *DefaultStorage) Get(key string) (interface{}, bool)
Get 获取指定键的值
func (*DefaultStorage) GetOrDefault ¶
func (s *DefaultStorage) GetOrDefault(key string, defaultValue interface{}) interface{}
GetOrDefault 获取值,不存在则返回默认值
func (*DefaultStorage) Range ¶
func (s *DefaultStorage) Range(f func(key string, value interface{}) bool)
Range 遍历所有键值对
type ErrorHandler ¶
type ErrorHandler struct {
AppCtx IApplicationContext
// contains filtered or unexported fields
}
ErrorHandler 错误处理器,提供错误处理和恢复中间件功能
func NewErrorHandler ¶
func NewErrorHandler(ctx IApplicationContext) *ErrorHandler
NewErrorHandler 创建错误处理器
func NewErrorHandlerOnce ¶
func NewErrorHandlerOnce(ctx IApplicationContext) *ErrorHandler
NewErrorHandlerOnce 单例模式创建错误处理器
func (*ErrorHandler) DefaultStackTraceHandler ¶
func (r *ErrorHandler) DefaultStackTraceHandler(ctx providerctx.ICoreContext, e interface{})
DefaultStackTraceHandler 记录请求上下文信息 + panic信息 + 堆栈信息
func (*ErrorHandler) ErrorHandler ¶
func (r *ErrorHandler) ErrorHandler(ctx providerctx.ICoreContext, err error) error
ErrorHandler 处理错误并返回对应的HTTP响应
func (*ErrorHandler) GetContext ¶
func (r *ErrorHandler) GetContext() IApplicationContext
GetContext 获取应用框架上下文
func (*ErrorHandler) RecoverMiddleware ¶
func (r *ErrorHandler) RecoverMiddleware(config ...RecoverConfig) any
RecoverMiddleware 返回恢复中间件函数,根据核心类型返回对应的中间件 通过恢复中间件管理器依据启动配置选择相应的提供者自动返回对应的恢复中间件
func (*ErrorHandler) SetRecoverManager ¶
func (r *ErrorHandler) SetRecoverManager(manager IProviderManager)
SetRecoverManager 设置恢复中间件管理器
type FiberHouse ¶
type FiberHouse struct {
AppCtx IApplicationContext
// contains filtered or unexported fields
}
FiberHouse FiberHouse应用运行器,用于配置和运行基于底层可切换框架的Web应用
func Default ¶
func Default(opts ...BootConfigOption) *FiberHouse
Default 创建默认的FiberHouse实例,支持通过函数选项修改默认配置
func (*FiberHouse) RunServer ¶
func (fh *FiberHouse) RunServer(manager ...IProviderManager)
RunServer 运行应用服务器 TODO 记录提供者状态日志: pending、loaded、skipped、failed
func (*FiberHouse) WithCoreStarterOptions ¶
func (fh *FiberHouse) WithCoreStarterOptions(opts ...CoreStarterOption) *FiberHouse
WithCoreStarterOptions 添加核心启动器选项: 用于fiberhouse.NewCoreWithFiber(appContext, opts...)创建核心启动器时传入的选项
func (*FiberHouse) WithFrameStarterOptions ¶
func (fh *FiberHouse) WithFrameStarterOptions(opts ...FrameStarterOption) *FiberHouse
WithFrameStarterOptions 添加框架启动器选项: 用于fiberhouse.NewFrameApplication(appContext, opts...)创建框架启动器时传入的选项
func (*FiberHouse) WithPManagers ¶
func (fh *FiberHouse) WithPManagers(managers ...IProviderManager) *FiberHouse
WithPManagers 添加服务提供者管理器,启动时初始化的全局服务提供者管理器: 框架默认的提供者管理器、用户自定义的提供者管理器
func (*FiberHouse) WithProviders ¶
func (fh *FiberHouse) WithProviders(providers ...IProvider) *FiberHouse
WithProviders 添加服务提供者,启动时初始化的全局服务提供者: 框架默认的提供者、用户自定义的提供者
type FiberRecovery ¶
type FiberRecovery struct {
AppCtx IApplicationContext
}
FiberRecovery Fiber 框架的请求数据实现
func NewFiberRecovery ¶
func NewFiberRecovery(ctx IApplicationContext) *FiberRecovery
NewFiberRecovery 创建 Fiber 恢复实例
func (*FiberRecovery) GetHeader ¶
func (f *FiberRecovery) GetHeader(ctx providerctx.ICoreContext, key string) string
func (*FiberRecovery) GetHeadersJson ¶
func (f *FiberRecovery) GetHeadersJson(ctx providerctx.ICoreContext, log bootstrap.LoggerWrapper, jsonEncoder func(interface{}) ([]byte, error), traceId string) []byte
func (*FiberRecovery) GetParamsJson ¶
func (f *FiberRecovery) GetParamsJson(ctx providerctx.ICoreContext, log bootstrap.LoggerWrapper, jsonEncoder func(interface{}) ([]byte, error), traceId string) []byte
func (*FiberRecovery) GetQueriesJson ¶
func (f *FiberRecovery) GetQueriesJson(ctx providerctx.ICoreContext, log bootstrap.LoggerWrapper, jsonEncoder func(interface{}) ([]byte, error), traceId string) []byte
func (*FiberRecovery) RecoverPanic ¶
func (f *FiberRecovery) RecoverPanic(config ...RecoverConfig) any
func (*FiberRecovery) TraceID ¶
func (f *FiberRecovery) TraceID(ctx providerctx.ICoreContext, flag ...string) string
type FiberRecoveryProvider ¶
type FiberRecoveryProvider struct {
IProvider
}
FiberRecoveryProvider Fiber 恢复提供者
func NewFiberRecoveryProvider ¶
func NewFiberRecoveryProvider() *FiberRecoveryProvider
NewFiberRecoveryProvider 创建 Fiber 恢复提供者
func (*FiberRecoveryProvider) Initialize ¶
func (p *FiberRecoveryProvider) Initialize(ctx IContext, initFunc ...ProviderInitFunc) (any, error)
Initialize 重载fiber提供者初始化方法
type FrameApplication ¶
type FrameApplication struct {
Ctx IApplicationContext
// contains filtered or unexported fields
}
FrameApplication 框架应用启动器实现,实现了 fiberhouse.ApplicationStarter 接口
func (*FrameApplication) GetApplication ¶
func (fa *FrameApplication) GetApplication() IApplication
GetApplication 获取实现IApplication接口的应用对象(ApplicationRegister)
func (*FrameApplication) GetContext ¶
func (fa *FrameApplication) GetContext() IApplicationContext
GetContext 获取应用上下文
func (*FrameApplication) GetFrameApp ¶
func (fa *FrameApplication) GetFrameApp() FrameStarter
GetFrameApp 获取框架启动器实例
func (*FrameApplication) GetModule ¶
func (fa *FrameApplication) GetModule() ModuleRegister
GetModule 获取ModuleRegister对象
func (*FrameApplication) GetTask ¶
func (fa *FrameApplication) GetTask() TaskRegister
GetTask 获取TaskRegister对象
func (*FrameApplication) InitializeCustomValidateInitializers ¶
func (fa *FrameApplication) InitializeCustomValidateInitializers()
InitializeCustomValidateInitializers 初始化自定义新增语言的验证器到验证包装器
func (*FrameApplication) InitializeGlobalRequired ¶
func (fa *FrameApplication) InitializeGlobalRequired()
InitializeGlobalRequired 初始化应用启动时必要的全局对象
func (*FrameApplication) RegisterApplication ¶
func (fa *FrameApplication) RegisterApplication(application ApplicationRegister)
RegisterApplication 注入应用注册器实例到应用启动器的application属性
func (*FrameApplication) RegisterApplicationGlobals ¶
func (fa *FrameApplication) RegisterApplicationGlobals(managers ...IProviderManager)
RegisterApplicationGlobals 注册应用全局初始化逻辑
注册全局对象初始化器 初始化必要的全局对象和组件 注册自定义新增语言的验证器实例到验证其包装器中 注册自定义验证器tag和tag的语言翻译
func (*FrameApplication) RegisterGlobalInitializers ¶
func (fa *FrameApplication) RegisterGlobalInitializers()
RegisterGlobalInitializers 注册全局对象初始化器
func (*FrameApplication) RegisterGlobalsKeepalive ¶
func (fa *FrameApplication) RegisterGlobalsKeepalive(managers ...IProviderManager)
RegisterGlobalsKeepalive 注册需要保活的全局对象后台健康检测
func (*FrameApplication) RegisterLoggerWithOriginToContainer ¶
func (fa *FrameApplication) RegisterLoggerWithOriginToContainer()
RegisterLoggerWithOriginToContainer 注册配置文件预定义LogOrigin不同来源的子日志器初始化器到容器 获取已初始化好日志来源标记的子日志器:
e.g. IContext.GetLoggerWithOrigin(originFormCfg appconfig.LogOrigin)
方便直接使用已附加来源标记的子日志器记录日志
func (*FrameApplication) RegisterModule ¶
func (fa *FrameApplication) RegisterModule(module ModuleRegister)
RegisterModule 注入应用模块/子系统注册器实例到应用启动器的module属性
func (*FrameApplication) RegisterTask ¶
func (fa *FrameApplication) RegisterTask(task TaskRegister)
RegisterTask 注入异步任务注册器实例到应用启动器的task属性
func (*FrameApplication) RegisterTaskServer ¶
func (fa *FrameApplication) RegisterTaskServer(managers ...IProviderManager)
RegisterTaskServer 注册启动异步任务服务器后台工作器服务
func (*FrameApplication) RegisterToCtx ¶
func (fa *FrameApplication) RegisterToCtx(as ApplicationStarter)
RegisterToCtx 注册应用启动器对象到应用上下文
func (*FrameApplication) RegisterValidatorCustomTags ¶
func (fa *FrameApplication) RegisterValidatorCustomTags()
RegisterValidatorCustomTags 注册验证器自定义的tag及翻译,详细使用见 https://github.com/go-playground/validator README & _examples
type FrameCmdStarter ¶
type FrameCmdStarter interface {
IStarter
// GetContext 获取应用上下文
GetContext() ICommandContext
// RegisterApplicationGlobals 注册应用预定义的全局对象实例到全局管理器容器中
RegisterApplicationGlobals()
// RegisterLoggerWithOriginToContainer 将预定义带日志源日志器注册到全局管理器容器中
RegisterLoggerWithOriginToContainer()
// RegisterApplication 注册应用注册器对象到启动器的Application属性
RegisterApplication(application ApplicationCmdRegister)
// GetFrameCmdApp 获取框架命令行应用启动器实例
GetFrameCmdApp() FrameCmdStarter
}
type FrameCmdStarterOption ¶
type FrameCmdStarterOption func(starter FrameCmdStarter)
FrameCmdStarterOption 框架命令行启动器选项函数类型
type FrameDefaultPManager ¶
type FrameDefaultPManager struct {
IProviderManager
}
FrameDefaultPManager 框架默认(框架启动器)提供者管理器
func NewFrameDefaultPManager ¶
func NewFrameDefaultPManager(appCtx IApplicationContext) *FrameDefaultPManager
func (*FrameDefaultPManager) LoadProvider ¶
func (m *FrameDefaultPManager) LoadProvider(loadFunc ...ProviderLoadFunc) (any, error)
LoadProvider 重载加载提供者
func (*FrameDefaultPManager) MountToParent ¶
func (m *FrameDefaultPManager) MountToParent(son ...IProviderManager) IProviderManager
MountToParent 重载挂载到父级提供者管理器 注意: 该方法的重载实现不是必须的,当NewXXX()内调用基类的MountToParent方法时,则无需重载该方法,二选一
type FrameDefaultProvider ¶
type FrameDefaultProvider struct {
IProvider
}
FrameDefaultProvider 框架默认(框架启动器)提供者
func NewFrameDefaultProvider ¶
func NewFrameDefaultProvider() *FrameDefaultProvider
func (*FrameDefaultProvider) Initialize ¶
func (p *FrameDefaultProvider) Initialize(ctx IContext, initFunc ...ProviderInitFunc) (any, error)
Initialize 重载初始化框架默认提供者
func (*FrameDefaultProvider) MountToParent ¶
func (p *FrameDefaultProvider) MountToParent(son ...IProvider) IProvider
MountToParent 重载挂载到父级提供者 注意: 该方法的重载实现不是必须的,当NewXXX()内调用基类的MountToParent方法时,则无需重载该方法,二选一
type FrameStarter ¶
type FrameStarter interface {
IStarter
// GetContext 获取应用上下文
// 返回全局应用上下文,提供配置、日志器、全局容器等基础设施访问
GetContext() IApplicationContext
// RegisterApplication 注册应用注册器
// 将应用注册器实例注入到启动器中,用于后续的全局对象初始化和配置
RegisterApplication(application ApplicationRegister)
// RegisterModule 注册模块注册器
// 将模块注册器实例注入到启动器中,用于模块级中间件、路由和Swagger的注册
RegisterModule(module ModuleRegister)
// GetModule 获取模块注册器
// 返回已注册的模块注册器实例
GetModule() ModuleRegister
// RegisterTask 注册任务注册器
// 将任务注册器实例注入到启动器中,用于异步任务服务器的初始化和启动
RegisterTask(task TaskRegister)
// GetTask 获取任务注册器
// 返回已注册的任务注册器实例
GetTask() TaskRegister
// RegisterToCtx 注册启动器到上下文
// 将启动器实例注册到应用上下文中,便于其他组件访问
RegisterToCtx(starter ApplicationStarter)
// RegisterApplicationGlobals 注册应用全局对象和必要对象的初始化
// 注册全局对象初始化器、初始化必要的全局实例、配置验证器等
// 包括数据库、缓存、Redis、验证器、自定义标签等的初始化
RegisterApplicationGlobals(...IProviderManager)
// RegisterLoggerWithOriginToContainer 注册带来源标识的日志器
// 将配置文件中预定义的不同来源的子日志器初始化器注册到容器中
// 便于获取已附加来源标记的专用日志器实例
RegisterLoggerWithOriginToContainer()
// RegisterGlobalsKeepalive 注册全局对象保活机制
// 启动后台健康检测服务,定期检查全局对象状态并自动重建不健康的实例
RegisterGlobalsKeepalive(...IProviderManager)
// RegisterTaskServer 注册异步任务服务器
// 根据配置启动异步任务服务器,注册任务处理器,运行后台任务worker服务并开始监听任务队列
RegisterTaskServer(...IProviderManager)
// GetFrameApp 获取框架启动器实例
GetFrameApp() FrameStarter
}
FrameStarter 应用框架启动器接口
func NewFrameApplication ¶
func NewFrameApplication(ctx IApplicationContext, opts ...FrameStarterOption) FrameStarter
NewFrameApplication 创建一个应用启动器对象
type FrameStarterOption ¶
type FrameStarterOption func(starter FrameStarter)
FrameStarterOption 定义框架启动器选项函数类型
type GinRecovery ¶
type GinRecovery struct {
AppCtx IApplicationContext
}
GinRecovery Gin 框架的请求数据实现
func NewGinRecovery ¶
func NewGinRecovery(ctx IApplicationContext) *GinRecovery
NewGinRecovery 创建 Gin 请求数据实例
func (*GinRecovery) GetHeader ¶
func (g *GinRecovery) GetHeader(ctx providerctx.ICoreContext, key string) string
func (*GinRecovery) GetHeadersJson ¶
func (g *GinRecovery) GetHeadersJson(ctx providerctx.ICoreContext, log bootstrap.LoggerWrapper, jsonEncoder func(interface{}) ([]byte, error), traceId string) []byte
func (*GinRecovery) GetParamsJson ¶
func (g *GinRecovery) GetParamsJson(ctx providerctx.ICoreContext, log bootstrap.LoggerWrapper, jsonEncoder func(interface{}) ([]byte, error), traceId string) []byte
func (*GinRecovery) GetQueriesJson ¶
func (g *GinRecovery) GetQueriesJson(ctx providerctx.ICoreContext, log bootstrap.LoggerWrapper, jsonEncoder func(interface{}) ([]byte, error), traceId string) []byte
func (*GinRecovery) RecoverPanic ¶
func (g *GinRecovery) RecoverPanic(config ...RecoverConfig) any
func (*GinRecovery) TraceID ¶
func (g *GinRecovery) TraceID(ctx providerctx.ICoreContext, flag ...string) string
type GinRecoveryProvider ¶
type GinRecoveryProvider struct {
IProvider
}
GinRecoveryProvider Gin 恢复提供者
func NewGinRecoveryProvider ¶
func NewGinRecoveryProvider() *GinRecoveryProvider
NewGinRecoveryProvider 创建 Gin 恢复提供者
func (*GinRecoveryProvider) Initialize ¶
func (p *GinRecoveryProvider) Initialize(ctx IContext, initFunc ...ProviderInitFunc) (any, error)
Initialize 重载gin提供者初始化方法
type IApplication ¶
type IApplication interface {
GetDBKey() globalmanager.KeyName // 定义数据库实例key
GetCacheKey() globalmanager.KeyName // 定义缓存实例的key,
GetDBMongoKey() globalmanager.KeyName // 定义mongodb实例的key,应用启动器用到
GetDBMysqlKey() globalmanager.KeyName // 定义mysql实例的key,应用启动器用到
GetRedisKey() globalmanager.KeyName // 定义redis实例key,应用启动器异步任务注册用到
GetFastTrafficCodecKey() globalmanager.KeyName // 定义快速的传输编解码器,应用启动器用到
GetDefaultTrafficCodecKey() globalmanager.KeyName // 定义默认的传输编解码器,应用启动器用到
GetLocalCacheKey() globalmanager.KeyName // 定义本地缓存实例的key
GetRemoteCacheKey() globalmanager.KeyName // 定义远程缓存实例的key
GetLevel2CacheKey() globalmanager.KeyName // 定义二级缓存实例的key
GetTaskDispatcherKey() globalmanager.KeyName // 定义异步任务客户端实例的key
GetTaskServerKey() globalmanager.KeyName // 定义异步任务服务端实例的key
// GetKey 预定义更多的全局对象实例key的通用获取方法,获取框架上述预定义外的额外预定义实例key
// 预定义映射为: map[InstanceKeyFlag]InstanceKey,推荐预定义映射,不支持运行时写入仅运行时读取映射字段
// key1 := xxx.GetKey("MyDBTest").KeyString() key2 := xxx.GetKey("MyDBTest2").StringWithPrefix("__custom_prefix_")
GetKey(InstanceKeyFlag) (InstanceKey, error) // 按预定义key flag获取全局对象实例key
GetMustKey(InstanceKeyFlag) InstanceKey // 按预定义key flag获取全局对象实例key,未找到则panic
}
IApplication 应用接口,定义了一些通用方法,如获取预定义的全局对象实例Key方法,
框架启动器通过这些预定义方法,获取必要的全局对象实例key, 以便在应用启动器启动阶段,注册和初始化这些全局对象实例,完成框架的启动流程
type IApplicationContext ¶
type IApplicationContext interface {
IContext
// RegisterStarterApp 挂载框架启动器app
RegisterStarterApp(sApp ApplicationStarter)
// GetStarterApp 获取框架应用启动器实例(如WebApplication)
GetStarterApp() ApplicationStarter
// RegisterAppState 注册应用启动状态
RegisterAppState(bool)
// GetAppState 获取应用启动状态
GetAppState() bool
// GetBootConfig 获取启动配置
GetBootConfig() *BootConfig
// RegisterBootConfig 注册启动配置
RegisterBootConfig(bc *BootConfig)
}
IApplicationContext 框架Web应用上下文接口
func NewAppContext ¶
func NewAppContext(cfg *appconfig.AppConfig, logger bootstrap.LoggerWrapper) IApplicationContext
NewAppContext 获取新的全局上下文对象
func NewAppContextOnce ¶
func NewAppContextOnce(cfg appconfig.IAppConfig, logger bootstrap.LoggerWrapper) IApplicationContext
NewAppContextOnce 获取全局应用上下文单例
type ICommandContext ¶
type ICommandContext interface {
IContext
// GetDigContainer 获取依赖注入容器
GetDigContainer() *component.DigContainer
// RegisterStarterApp 挂载框架启动器app
RegisterStarterApp(app CommandStarter)
// GetStarterApp 获取框架启动器实例(CommandStarter)
GetStarterApp() CommandStarter
}
IApplicationContext 框架命令行应用上下文接口
func NewCmdContextOnce ¶
func NewCmdContextOnce(cfg appconfig.IAppConfig, logger bootstrap.LoggerWrapper) ICommandContext
NewCmdContextOnce 获取命令行应用上下文对象单例
type IContext ¶
type IContext interface {
// GetConfig 定义获取全局配置的方法
GetConfig() appconfig.IAppConfig
// GetLogger 定义获取全局日志器的方法
GetLogger() bootstrap.LoggerWrapper
// GetContainer 定义获取全局管理器的方法
GetContainer() *globalmanager.GlobalManager
// GetStarter 定义获取启动器实例的方法,用于获取IApplication实例方法
GetStarter() IStarter
// GetLoggerWithOrigin 定义获取附加来源的子日志器单例的方法(从全局管理器获取)
GetLoggerWithOrigin(originFormCfg appconfig.LogOrigin) (*zerolog.Logger, error)
// GetMustLoggerWithOrigin 定义获取附加来源的日志器实例的方法,若获取失败则panic(从全局管理器获取)
GetMustLoggerWithOrigin(originFormCfg appconfig.LogOrigin) *zerolog.Logger
// GetValidateWrap 定义获取全局验证器包装器的方法
GetValidateWrap() validate.ValidateWrapper
}
IContext 全局上下文接口
type IContextCoreWrapper ¶
type IContextCoreWrapper interface {
WithAppCtx(appCtx IApplicationContext) providerCtx.ICoreContext
Release()
}
type IErrorHandler ¶
type IErrorHandler interface {
DefaultStackTraceHandler(providerctx.ICoreContext, interface{})
ErrorHandler(providerctx.ICoreContext, error) error
GetContext() IApplicationContext
RecoverMiddleware(...RecoverConfig) any
}
IErrorHandler 错误处理接口,用于统一定义堆栈日志记录及错误处理器的方法
type IPayload ¶
type IPayload interface {
GetJsonHandler(ctx IContext) (JsonWrapper, error)
GetMustJsonHandler(ctx IContext) JsonWrapper
GetDefault(ctx IContext) JsonWrapper
}
IPayload 定义了获取JSON编解码器的方法接口,适用于需要处理JSON数据的场景。
func NewPayloadBase ¶
func NewPayloadBase() IPayload
type IProvider ¶
type IProvider interface {
// Name 返回提供者名称
Name() string
// Version 返回提供者版本
Version() string
// Initialize 执行提供者初始化操作
Initialize(IContext, ...ProviderInitFunc) (any, error)
// RegisterTo 将提供者注册到提供者管理器中
RegisterTo(manager IProviderManager) error
// Status 返回提供者当前状态
Status() IState
// Target 返回提供者的目标框架引擎类型, e.g., "gin", "fiber",...。该字段区分不同框架引擎类型的提供者实现,也可以用区分其他维度
Target() string
// Type 返回提供者的类型, e.g., "middleware", "route_register", "sonic_json_codec", "std_json_codec",...
Type() IProviderType
// SetName 设置提供者名称
SetName(string) IProvider
// SetVersion 设置提供者版本
SetVersion(string) IProvider
// SetTarget 设置提供者目标框架
SetTarget(string) IProvider
// SetStatus 设置提供者状态
SetStatus(IState) IProvider
// SetType 设置提供者类型,仅允许设置一次
SetType(IProviderType) IProvider
// Check 检查提供者是否设置类型值
Check()
// BindToUniqueManagerIfSingleton 将提供者绑定到唯一的管理器
// 注意:传入的管理器对象应当是一个单例实现,以确保全局唯一性
// 该方法内部调用管理器的 BindToUniqueProvider 方法进行彼此唯一绑定
// 返回提供者自身以支持链式调用
// 生效条件:1. 传入的管理器对象是单例实现;2. 子类提供者重载该方法且子类实例本身调用该方法;3. 需要将子类实例反向挂载到父类属性上
BindToUniqueManagerIfSingleton(IProviderManager) IProvider
// MountToParent 将当前提供者挂载到父级提供者中
MountToParent(son ...IProvider) IProvider
}
IProvider 提供者接口
type IProviderLocation ¶
type IProviderLocation interface {
// GetLocationID 获取位点序号
GetLocationID() uint8
// GetLocationName 获取位点名称
GetLocationName() string
// IsDefaultLocation 是否为默认位点
IsDefaultLocation() bool
// Bind 绑定管理器到该位点的管理器列表中
Bind(manager IProviderManager) error
// GetManagers 获取已绑定到该位点的管理器列表
GetManagers() []IProviderManager
}
IProviderLocation 提供者位点接口,用于标识提供者管理器的执行位置,应用启动流程或生命周期的相关阶段,以及其他自定义执行点 位置点对象可以收集绑定到该位置点的提供者管理器,并按顺序加载和执行这些管理器中的提供者,实现灵活地扩展和定制化行为
type IProviderManager ¶
type IProviderManager interface {
// Name 返回提供者管理器名称
Name() string
// SetName 设置提供者管理器名称
SetName(string) IProviderManager
// Type 返回提供者类型
Type() IProviderType
// SetType 设置提供者类型,仅允许设置一次
SetType(IProviderType) IProviderManager
// Location 获取管理器的执行位置点
Location() IProviderLocation
// SetOrBindToLocation 设置管理器的执行位置点,仅允许设置一次
SetOrBindToLocation(IProviderLocation, ...bool) IProviderManager
// GetContext 获取管理器关联的上下文对象
GetContext() IContext
// Register 注册提供者到管理器中
Register(provider IProvider) error
// Unregister 从管理器中注销提供者
Unregister(name string) error
// GetProvider 根据名称获取提供者实例
GetProvider(name string) (IProvider, error)
// List 列出管理器中所有注册的提供者
List() []IProvider
// Map 以名称为键,提供者实例为值,返回管理器中所有注册的提供者映射
Map() map[string]IProvider
// LoadProvider 加载提供者
LoadProvider(loadFunc ...ProviderLoadFunc) (any, error)
// Check 检查提供者管理器是否设置类型值
Check()
// BindToUniqueProvider 绑定唯一的提供者到管理器
// 确保管理器有且仅有一个提供者注册进来
// 如果已存在相同的提供者记录,视为注册成功
// 如果已存在多个提供者,则 panic 错误
// 返回管理器自身以支持链式调用
BindToUniqueProvider(IProvider) IProviderManager
// IsUnique 返回管理器是否处于唯一提供者模式
IsUnique() bool
// MountToParent 将当前管理器挂载到父级管理器中
MountToParent(son ...IProviderManager) IProviderManager
}
IProviderManager 提供者管理器接口
type IProviderType ¶
type IProviderType interface {
// GetTypeID 获取类型序号
GetTypeID() uint8
// GetTypeName 获取类型名称
GetTypeName() string
// IsDefaultType 是否为默认类型
IsDefaultType() bool
}
IProviderType 提供者类型接口
type IRecover ¶
type IRecover interface {
// GetParamsJson 获取路由参数的 JSON 编码字节切片
GetParamsJson(ctx providerctx.ICoreContext, log bootstrap.LoggerWrapper, jsonEncoder func(interface{}) ([]byte, error), traceId string) []byte
// GetQueriesJson 获取查询参数的 JSON 编码字节切片
GetQueriesJson(ctx providerctx.ICoreContext, log bootstrap.LoggerWrapper, jsonEncoder func(interface{}) ([]byte, error), traceId string) []byte
// GetHeadersJson 获取请求头的 JSON 编码字节切片(敏感信息脱敏)
GetHeadersJson(ctx providerctx.ICoreContext, log bootstrap.LoggerWrapper, jsonEncoder func(interface{}) ([]byte, error), traceId string) []byte
// RecoverPanic 返回恢复中间件函数,根据核心类型(如 fiber、gin)返回对应的中间件
// 通过恢复中间件管理器依据启动配置选择相应的提供者自动返回对应的恢复中间件
RecoverPanic(...RecoverConfig) any
TraceID(ctx providerctx.ICoreContext, flag ...string) string
GetHeader(ctx providerctx.ICoreContext, key string) string
}
IRecover 恢复惊慌接口,用于获取不同框架的请求上下文中的参数、查询参数、获取tranceID以及定义恢复中间件方法
type IRegister ¶
type IRegister interface {
// GetName 获取注册器名称
GetName() string
// SetName 设置注册器名称
SetName(name string)
}
IRegister 注册器接口
用来将用户自定义的应用、模块/子系统及任务的注册器实例,注册进应用启动器
type IStarter ¶
type IStarter interface {
GetApplication() IApplication
}
IStarter 启动器接口,定义了获取应用实例的方法
IApplication 定义了一些通用方法,如获取预定义的全局对象实例Key方法 ¶
全局对象实例Key,如数据库、缓存、任务调度器等,通过实例Key在全局管理器中获取对应的实例
type IState ¶
type IState interface {
// Id 返回状态标识符
Id() uint8
// Name 返回状态名称
Name() string
// Set 设置状态标识符和名称
Set(uint8, string) IState
// SetState 用另一个状态对象的值设置当前状态对象
SetState(IState) IState
}
IState 提供者状态接口
type IStorage ¶
type IStorage interface {
// Set 设置键值对,如果键已存在则覆盖
Set(key string, value interface{})
// Get 获取指定键的值,返回值和是否存在的标志
Get(key string) (value interface{}, exists bool)
// GetOrDefault 获取值,如果不存在则返回默认值
GetOrDefault(key string, defaultValue interface{}) interface{}
// Delete 删除指定键,返回是否删除成功
Delete(key string) bool
// Has 检查键是否存在
Has(key string) bool
// Clear 清空所有键值对
Clear()
// Keys 返回所有键的切片
Keys() []string
// Len 返回存储的键值对数量
Len() int
// Range 遍历所有键值对,如果回调函数返回false则停止遍历
Range(f func(key string, value interface{}) bool)
}
IStorage 通用键值存储接口
type InstanceKey ¶
type InstanceKey string
InstanceKey 定义全局对象实例的Key类型
func (*InstanceKey) KeyString ¶
func (ik *InstanceKey) KeyString() globalmanager.KeyName
KeyString 带默认前缀的实例Key字符串,用于容器注册
func (*InstanceKey) String ¶
func (ik *InstanceKey) String() globalmanager.KeyName
String 获取实例Key字符串
func (*InstanceKey) StringWithPrefix ¶
func (ik *InstanceKey) StringWithPrefix(pfx string) globalmanager.KeyName
StringWithPrefix 带自定义前缀的实例Key字符串, 用于容器注册
type InstanceKeyFlag ¶
type InstanceKeyFlag string
InstanceKeyFlag 预定义配置的全局对象实例key的标识,映射具体的InstanceKey, 通过该标识自定义需要从全局管理器获取特定实例
type JsonCodecPManager ¶
type JsonCodecPManager struct {
IProviderManager
}
JsonCodecPManager JSON 编解码提供者管理器
func NewJsonCodecPManager ¶
func NewJsonCodecPManager(ctx IApplicationContext) *JsonCodecPManager
NewJsonCodecPManager 创建一个新的 JSON 编解码管理器
func (*JsonCodecPManager) LoadProvider ¶
func (m *JsonCodecPManager) LoadProvider(loadFunc ...ProviderLoadFunc) (any, error)
LoadProvider 重载加载提供者
func (*JsonCodecPManager) MountToParent ¶
func (m *JsonCodecPManager) MountToParent(son ...IProviderManager) IProviderManager
MountToParent 重载挂载到父级提供者管理器 注意: 该方法的重载实现不是必须的,当NewXXX()内调用基类的MountToParent方法时,则无需重载该方法,二选一
type JsonJCodecFiberProvider ¶
type JsonJCodecFiberProvider struct {
IProvider
}
func NewJsonJCodecFiberProvider ¶
func NewJsonJCodecFiberProvider() *JsonJCodecFiberProvider
NewJsonJCodecFiberProvider 创建一个新的 JSON 编解码提供者
func (*JsonJCodecFiberProvider) Initialize ¶
func (j *JsonJCodecFiberProvider) Initialize(ctx IContext, fn ...ProviderInitFunc) (any, error)
Initialize 重载初始化 JSON 编解码提供者
type JsonJCodecGinProvider ¶
type JsonJCodecGinProvider struct {
IProvider
}
func NewJsonJCodecGinProvider ¶
func NewJsonJCodecGinProvider() *JsonJCodecGinProvider
NewJsonJCodecGinProvider 创建一个新的 JSON 编解码提供者
func (*JsonJCodecGinProvider) Initialize ¶
func (j *JsonJCodecGinProvider) Initialize(ctx IContext, fn ...ProviderInitFunc) (any, error)
Initialize 重载初始化 JSON 编解码提供者
type JsonWrapper ¶
type JsonWrapper interface {
Marshal(v interface{}) ([]byte, error)
Unmarshal(data []byte, v interface{}) error
}
JsonWrapper JSON包装器接口,定义了JSON序列化和反序列化的方法
type Locator ¶
type Locator interface {
// 获取全局上下文对象
GetContext() IContext
// 获取定位器名称空间
GetName() string
// 设置定位器名称空间
SetName(string) Locator // replace interface{}
// GetInstance 获取实例(从全局管理器获取具体的单例)
GetInstance(string) (interface{}, error)
}
Locator 定位器接口,定义了获取上下文、名称、实例等方法 以及错误恢复方法。用于分层和管理应用中的业务组件或服务实例。 该接口可以被具体的API、Service、Repository等定位器实现。
type Modeler ¶
type Modeler interface {
Locator
// 获取数据库名称
GetDbName() string
// 设置数据库名称,返回当前对象以支持链式调用
SetDbName(string) Modeler // replace interface{}
// 获取数据表名称
GetTable() string
// 设置数据表名称,返回当前对象以支持链式调用
SetTable(string, ...string) Modeler // replace interface{}
}
Modeler 模型接口,定义了数据库模型的基本操作方法 MongoLocator 定义了MongoDB的定位器接口,见database/dbmongo/interface.go MysqlLocator 定义了MySQL的定位器接口,见database/dbmysql/interface.go
type ModuleRegister ¶
type ModuleRegister interface {
IRegister
// GetContext 返回全局上下文
GetContext() IApplicationContext
// RegisterModuleRouteHandlers 注册模块级别/子系统路由处理器
RegisterModuleRouteHandlers(cs CoreStarter)
// RegisterSwagger 注册swagger
RegisterSwagger(cs CoreStarter)
}
ModuleRegister 模块注册器
用于注册应用的模块/子系统,包括中间件、路由、swagger等 启动器会调用模块注册器完成模块初始化
type PLocation ¶
type PLocation struct {
// contains filtered or unexported fields
}
PLocation 位点实现
func (*PLocation) Bind ¶
func (l *PLocation) Bind(manager IProviderManager) error
Bind 绑定管理器到该位点的管理器列表中
func (*PLocation) GetLocationID ¶
func (*PLocation) GetLocationName ¶
func (*PLocation) GetManagers ¶
func (l *PLocation) GetManagers() []IProviderManager
GetManagers 获取已绑定到该位点的管理器列表(返回副本,确保外部修改不影响内部数据)
func (*PLocation) IsDefaultLocation ¶
type PType ¶
type PType struct {
// contains filtered or unexported fields
}
PType 类型实现
func (*PType) GetTypeName ¶
func (*PType) IsDefaultType ¶
type PayloadBase ¶
type PayloadBase struct{}
PayloadBase 是基础负载处理器,实现 IPayload 接口,用于被实际负载对象继承,以及方便获取json编解码器
func (*PayloadBase) GetDefault ¶
func (p *PayloadBase) GetDefault(ctx IContext) JsonWrapper
GetDefault 返回默认的JSON处理器实例
func (*PayloadBase) GetJsonHandler ¶
func (p *PayloadBase) GetJsonHandler(ctx IContext) (JsonWrapper, error)
GetJsonHandler 根据上下文获取JSON处理器,如果上下文为nil,则返回默认的JSON处理器
func (*PayloadBase) GetMustJsonHandler ¶
func (p *PayloadBase) GetMustJsonHandler(ctx IContext) JsonWrapper
GetMustJsonHandler 确保获取到的JSON处理器不为nil,如果获取失败,则返回默认的JSON处理器
type Provider ¶
type Provider struct {
// contains filtered or unexported fields
}
Provider 提供者接口的基类实现,通过组合模式支持子类扩展,子类只需重载所需方法即可实现多态行为 注意:在调用提供者接口的一些特性方法前,子类实例应通过 MountToParent 方法将子类实例挂载到该基类的 sonProvider 字段,以确保多态行为的正确实现 如Initialize、RegisterTo、BindToUniqueManagerIfSingleton
注意:提供者基类实现中未使用锁机制保护并发安全,仅在应用启动阶段初始化、写操作,运行时仅允许读取操作;否则子类应自行实现并发安全保护
func (*Provider) BindToUniqueManagerIfSingleton ¶
func (p *Provider) BindToUniqueManagerIfSingleton(m IProviderManager) IProvider
BindToUniqueManagerIfSingleton 将提供者绑定到唯一的管理器 注意:传入的管理器对象应当是一个单例实现,以确保全局唯一性 该方法内部调用管理器的 BindToUniqueProvider 方法进行彼此唯一绑定 返回提供者自身以支持链式调用
func (*Provider) Check ¶
func (p *Provider) Check()
Check 检查提供者类型是否设置,未设置则抛出异常,强制Initialize方法内优先进行检查
func (*Provider) Initialize ¶
func (p *Provider) Initialize(ctx IContext, initFunc ...ProviderInitFunc) (any, error)
Initialize 初始化提供者
func (*Provider) MountToParent ¶
MountToParent 将当前提供者挂载到父级提供者 sonManager 字段上
func (*Provider) RegisterTo ¶
func (p *Provider) RegisterTo(m IProviderManager) error
RegisterTo 将提供者注册到管理器 注意:此方法会注册 sonProvider 字段指向的实例,子类型应通过 MountToParent 设置该字段,否则避免使用该基类方法
func (*Provider) SetVersion ¶
SetVersion 设置提供者版本
type ProviderError ¶
type ProviderError struct {
// contains filtered or unexported fields
}
func (*ProviderError) Error ¶
func (e *ProviderError) Error() string
type ProviderInitFunc ¶
ProviderInitFunc 提供者初始化函数类型
type ProviderLoadFunc ¶
type ProviderLoadFunc func(manager IProviderManager) (any, error)
ProviderLoadFunc 提供者加载函数类型
type ProviderLocationRegistry ¶
type ProviderLocationRegistry struct {
// contains filtered or unexported fields
}
ProviderLocationRegistry 位点注册结构体
func ProviderLocationGen ¶
func ProviderLocationGen() *ProviderLocationRegistry
ProviderLocationGen 获取位点注册结构体单例
func (*ProviderLocationRegistry) Custom ¶
func (r *ProviderLocationRegistry) Custom(name string) (IProviderLocation, error)
Custom 注册并获取自定义位点对象(ID范围: 64-255)
func (*ProviderLocationRegistry) Default ¶
func (r *ProviderLocationRegistry) Default(name string) (IProviderLocation, error)
Default 注册并获取默认位点对象(ID范围: 0-63)
func (*ProviderLocationRegistry) Location ¶
func (r *ProviderLocationRegistry) Location(name string) (IProviderLocation, error)
Location 根据名称获取位点对象(查找默认位点和自定义位点)
func (*ProviderLocationRegistry) MustCustom ¶
func (r *ProviderLocationRegistry) MustCustom(name string) IProviderLocation
MustCustom 注册并获取自定义位点对象,失败时panic
func (*ProviderLocationRegistry) MustDefault ¶
func (r *ProviderLocationRegistry) MustDefault(name string) IProviderLocation
MustDefault 注册并获取默认位点对象,失败时panic
func (*ProviderLocationRegistry) MustLocation ¶
func (r *ProviderLocationRegistry) MustLocation(name string) IProviderLocation
MustLocation 根据名称获取位点对象,不存在时panic
type ProviderManager ¶
type ProviderManager struct {
// contains filtered or unexported fields
}
ProviderManager 提供者管理器接口的基类实现,通过组合模式支持子类扩展,子类只需重载所需方法即可实现多态行为 注意:在调用提供者管理器接口的一些特性方法前,子类实例应通过 MountToParent 方法将子类实例挂载到该基类的 sonManager 字段,以确保多态行为的正确实现 如LoadProvider()方法
注意:提供者管理器基类实现中未使用锁机制保护并发安全,仅在应用启动阶段初始化、写操作,运行时仅允许读取操作;否则子类应自行实现并发安全保护
func NewCoreCtxPManagerParentOnce ¶
func NewCoreCtxPManagerParentOnce() *ProviderManager
NewCoreCtxPManagerParentOnce 单例模式获取核心上下文提供者管理器的父级管理器 注意: 该父级管理器应已通过位置点注册了核心上下文提供者管理器,否则将抛出异常
func NewProviderManager ¶
func NewProviderManager(ctx IContext) *ProviderManager
NewProviderManager 创建一个基类的提供者管理器,用于组合和扩展
func (*ProviderManager) BindToUniqueProvider ¶
func (m *ProviderManager) BindToUniqueProvider(provider IProvider) IProviderManager
BindToUniqueProvider 绑定唯一的提供者到管理器 确保管理器有且仅有一个提供者注册进来 如果已存在相同的提供者记录,视为注册成功并设置唯一属性为 true 如果已存在多个提供者,则 panic 错误 返回管理器自身以支持链式调用
func (*ProviderManager) Check ¶
func (m *ProviderManager) Check()
Check 检查提供者类型是否设置,未设置则抛出异常,强制Initialize方法内优先进行检查
func (*ProviderManager) GetContext ¶
func (m *ProviderManager) GetContext() IContext
GetContext 获取应用上下文
func (*ProviderManager) GetProvider ¶
func (m *ProviderManager) GetProvider(name string) (IProvider, error)
GetProvider 获取指定名称的 provider
func (*ProviderManager) IsUnique ¶
func (m *ProviderManager) IsUnique() bool
IsUnique 返回管理器是否处于唯一提供者模式
func (*ProviderManager) LoadProvider ¶
func (m *ProviderManager) LoadProvider(loadFunc ...ProviderLoadFunc) (any, error)
LoadProvider 加载 providers
func (*ProviderManager) Location ¶
func (m *ProviderManager) Location() IProviderLocation
Location 返回管理器执行位置点标识
func (*ProviderManager) Map ¶
func (m *ProviderManager) Map() map[string]IProvider
Map 返回所有已注册的 providers 映射
func (*ProviderManager) MountToParent ¶
func (m *ProviderManager) MountToParent(son ...IProviderManager) IProviderManager
MountToParent 将子类管理器实例挂载到父类管理器的 sonManager 字段上
func (*ProviderManager) Register ¶
func (m *ProviderManager) Register(provider IProvider) error
Register 注册一个 provider
func (*ProviderManager) SetName ¶
func (m *ProviderManager) SetName(name string) IProviderManager
SetName 设置提供者管理器名称
func (*ProviderManager) SetOrBindToLocation ¶
func (m *ProviderManager) SetOrBindToLocation(l IProviderLocation, bind ...bool) IProviderManager
SetOrBindToLocation 设置管理器执行位置点标识,如果传入 bind 参数且为 true,则将管理器绑定(添加)到该位置点的管理器列表中
func (*ProviderManager) SetType ¶
func (m *ProviderManager) SetType(typ IProviderType) IProviderManager
SetType 设置提供者类型,仅允许设置一次
func (*ProviderManager) Unregister ¶
func (m *ProviderManager) Unregister(name string) error
Unregister 注销一个 provider
type ProviderTypeRegistry ¶
type ProviderTypeRegistry struct {
// contains filtered or unexported fields
}
ProviderTypeRegistry 类型注册结构体
func (*ProviderTypeRegistry) Custom ¶
func (r *ProviderTypeRegistry) Custom(name string) (IProviderType, error)
Custom 注册并获取自定义类型对象(ID范围: 64-255)
func (*ProviderTypeRegistry) Default ¶
func (r *ProviderTypeRegistry) Default(name string) (IProviderType, error)
Default 注册并获取默认类型对象(ID范围: 0-63)
func (*ProviderTypeRegistry) MustCustom ¶
func (r *ProviderTypeRegistry) MustCustom(name string) IProviderType
MustCustom 注册并获取自定义类型对象,失败时panic
func (*ProviderTypeRegistry) MustDefault ¶
func (r *ProviderTypeRegistry) MustDefault(name string) IProviderType
MustDefault 注册并获取默认类型对象,失败时panic
func (*ProviderTypeRegistry) MustType ¶
func (r *ProviderTypeRegistry) MustType(name string) IProviderType
MustType 根据名称获取类型对象,不存在时panic
func (*ProviderTypeRegistry) Type ¶
func (r *ProviderTypeRegistry) Type(name string) (IProviderType, error)
Type 根据名称获取类型对象(查找默认类型和自定义类型)
type RecoverConfig ¶
type RecoverConfig struct {
// Next 定义了一个函数,当返回 true 时跳过该中间件。
//
// 可选。 默认: nil
Next func(c providerctx.ICoreContext) bool
// AppCtx 提供应用框架上下文
AppCtx IApplicationContext
// EnableStackTrace 表示是否启用堆栈跟踪功能
//
// 可选。 默认: false
EnableStackTrace bool
// StackTraceHandler 定义了一个处理堆栈跟踪的函数
//
// 可选配置。默认值:defaultStackTraceHandler
StackTraceHandler func(c providerctx.ICoreContext, e interface{})
// Logger for record messages
Logger interface{}
// Json Codec 用于将数据编码为 JSON 格式的函数
JsonCodec func(interface{}) ([]byte, error)
// 默认输出目标是 os.Stdout
Stdout bool
// 调试模式:true 将详细错误信息响应给客户端,否则仅记入日志
DebugMode bool
}
Config 结构体用于定义 recover 中间件的配置项。
var ConfigConfigured RecoverConfig
ConfigConfigured Configured 已配置
type RecoveryPManager ¶
type RecoveryPManager struct {
IProviderManager
}
RecoveryPManager 恢复惊慌管理器
func NewRecoveryPManager ¶
func NewRecoveryPManager(ctx IContext) *RecoveryPManager
NewRecoveryPManager 创建恢复惊慌管理器
func NewRecoveryPManagerOnce ¶
func NewRecoveryPManagerOnce(ctx IContext) *RecoveryPManager
NewRecoveryPManagerOnce 获取恢复惊慌管理器单例
func (*RecoveryPManager) LoadProvider ¶
func (m *RecoveryPManager) LoadProvider(loadFunc ...ProviderLoadFunc) (any, error)
LoadProvider 根据 CoreType 加载对应的恢复惊慌提供者
func (*RecoveryPManager) MountToParent ¶
func (m *RecoveryPManager) MountToParent(son ...IProviderManager) IProviderManager
MountToParent 挂载到父级管理器
type RegisterInitializerFuncType ¶
type RegisterInitializerFuncType func(ctx IApplicationContext, ns ...string) string
RegisterInitializerFuncType 定义注册全局管理器初始化函数类型,用于便捷自动完成该函数签名 @param ns string namespace key前缀命名空间
type RegisterKeyFuncType ¶
RegisterKeyFuncType 定义获取注册全局管理器key的名称函数类型,用于便捷自动完成该函数签名 @param ns string namespace key前缀命名空间
type Repository ¶
type Repository struct {
Ctx IContext
// contains filtered or unexported fields
}
Repository 实现了RepositoryLocator接口 用于被具体的Repository实例继承,如UserRepository、OrderRepository等 主要包含服务名称、应用上下文、获取实例等基础方法
func NewRepository ¶
func NewRepository(ctx IApplicationContext) *Repository
func (*Repository) GetInstance ¶
func (r *Repository) GetInstance(namespaceKey string) (interface{}, error)
GetInstance 获取实例(从全局管理器获取具体的单例)
func (*Repository) GetName ¶
func (r *Repository) GetName() string
GetName 获取名称,通常用于标记注册器名称或用于容器注册的keyName
func (*Repository) SetName ¶
func (r *Repository) SetName(name string) Locator
SetName 设置名称,通常用于标记注册器名称或用于容器注册的keyName
type RespInfoMsgpackProvider ¶
type RespInfoMsgpackProvider struct {
IProvider
}
RespInfoMsgpackProvider 响应信息 Msgpack 提供者
func NewRespInfoMsgpackProvider ¶
func NewRespInfoMsgpackProvider() *RespInfoMsgpackProvider
func (*RespInfoMsgpackProvider) Initialize ¶
func (p *RespInfoMsgpackProvider) Initialize(ctx IContext, initFunc ...ProviderInitFunc) (any, error)
Initialize 初始化
type RespInfoPManager ¶
type RespInfoPManager struct {
IProviderManager
}
RespInfoPManager 响应信息提供者管理器
func NewRespInfoPManager ¶
func NewRespInfoPManager(ctx IContext) *RespInfoPManager
func NewRespInfoPManagerOnce ¶
func NewRespInfoPManagerOnce() *RespInfoPManager
NewRespInfoPManagerOnce 获取响应信息提供者管理器单例
func (*RespInfoPManager) LoadProvider ¶
func (m *RespInfoPManager) LoadProvider(loadFunc ...ProviderLoadFunc) (any, error)
LoadProvider 加载提供者
type RespInfoProtobufProvider ¶
type RespInfoProtobufProvider struct {
IProvider
}
RespInfoProtobufProvider 响应信息 Protobuf 提供者
func NewRespInfoProtobufProvider ¶
func NewRespInfoProtobufProvider() *RespInfoProtobufProvider
func (*RespInfoProtobufProvider) Initialize ¶
func (p *RespInfoProtobufProvider) Initialize(ctx IContext, initFunc ...ProviderInitFunc) (any, error)
Initialize 初始化
type ResponseWrap ¶
ResponseWrap 响应包装结构体
func (*ResponseWrap) ErrorCustom ¶
func (r *ResponseWrap) ErrorCustom(code int, message string) response.IResponse
ErrorCustom 设置自定义错误响应
func (*ResponseWrap) Reset ¶
func (r *ResponseWrap) Reset(code int, msg string, data interface{}) response.IResponse
Reset 重置 ResponseWrap
func (*ResponseWrap) SendWithCtx ¶
func (r *ResponseWrap) SendWithCtx(c providerctx.ICoreContext, status ...int) error
SendWithCtx 使用核心上下文接口响应 JSON 数据
func (*ResponseWrap) SuccessWithData ¶
func (r *ResponseWrap) SuccessWithData(data ...interface{}) response.IResponse
SuccessWithData 设置成功响应数据
type Service ¶
type Service struct {
Ctx IContext
// contains filtered or unexported fields
}
Service 实现了ServiceLocator接口 用于被具体的Service实例继承,如UserService等 主要包含服务名称、应用上下文、获取实例等基础方法
func NewService ¶
func (*Service) GetInstance ¶
GetInstance 获取实例(从全局管理器获取具体的单例)
type SonicJCodecFiberProvider ¶
type SonicJCodecFiberProvider struct {
IProvider
}
func NewSonicJCodecFiberProvider ¶
func NewSonicJCodecFiberProvider() *SonicJCodecFiberProvider
NewJCodecProvider 创建一个新的 JSON 编解码提供者
func (*SonicJCodecFiberProvider) Initialize ¶
func (j *SonicJCodecFiberProvider) Initialize(ctx IContext, fn ...ProviderInitFunc) (any, error)
Initialize 重载初始化 JSON 编解码提供者
type SonicJCodecGinProvider ¶
type SonicJCodecGinProvider struct {
IProvider
}
func NewSonicJCodecGinProvider ¶
func NewSonicJCodecGinProvider() *SonicJCodecGinProvider
NewJCodecProvider 创建一个新的 JSON 编解码提供者
func (*SonicJCodecGinProvider) Initialize ¶
func (j *SonicJCodecGinProvider) Initialize(ctx IContext, fn ...ProviderInitFunc) (any, error)
Initialize 重载初始化 JSON 编解码提供者
type State ¶
type State struct {
// contains filtered or unexported fields
}
State 提供者的状态结构体,实现状态器接口
type TaskDispatcher ¶
TaskDispatcher 封装 asynq.Client,简化任务发送到 asynq 服务器的流程,支持异步和同步任务调度。
func NewTaskDispatcher ¶
func NewTaskDispatcher(redisClient *redis.Client) *TaskDispatcher
type TaskHandlerMap ¶
TaskHandlerMap 定义任务处理函数映射,键为任务类型,值为对应的处理函数
type TaskRegister ¶
type TaskRegister interface {
IRegister
// GetContext 返回全局上下文
GetContext() IApplicationContext
// GetTaskHandlerMap 返回任务处理器配置map
//
// 示例:
// func myTaskHandler(ctx context.Context, t *asynq.Task) error {
// // 处理任务逻辑
// return nil // 或返回错误
// }
//
// taskHandlerMap := map[string]func(context.Context, *asynq.Task) error{
// "task_type_1": myTaskHandler,
// // 更多任务类型和对应的处理器函数
// }
GetTaskHandlerMap() map[string]func(context.Context, *asynq.Task) error
// AddTaskHandlerToMap 向任务处理器映射中添加一个新的任务处理器
//
// 示例:
// func myTaskHandler2(ctx context.Context, t *asynq.Task) error {
// // 处理任务逻辑
// return nil // 或返回错误
// }
//
// taskRegister.AddTaskHandlerToMap("task_type_2", myTaskHandler2)
AddTaskHandlerToMap(pattern string, handler func(context.Context, *asynq.Task) error)
// RegisterTaskServerToContainer 注册异步任务服务器初始化器到容器
RegisterTaskServerToContainer()
// RegisterTaskDispatcherToContainer 注册异步任务客户端初始化器到容器
RegisterTaskDispatcherToContainer()
// GetTaskDispatcher 获取任务客户端/调度器实例
GetTaskDispatcher() (*TaskDispatcher, error)
// GetTaskWorker 获取任务服务器/工作器实例
GetTaskWorker(key string) (*TaskWorker, error)
}
TaskRegister 任务注册器(基于 asynq)
用户需实现此接口并在应用启动阶段注册到 ApplicationStarter 注册后的任务注册器实例会绑定到 ApplicationStarter 的 task 属性,由启动器调用其方法完成任务组件的初始化
当全局配置开启异步任务组件时,任务注册器负责: 1. 集中声明并注册任务类型(asynq 任务名)与其处理函数到映射容器。 2. 将任务调度器(Dispatcher)与任务工作器(Worker)的初始化器注册到全局容器。 3. 提供获取任务调度器与工作器实例的访问方法。
type TaskWorker ¶
type TaskWorker struct {
Ctx IContext
// contains filtered or unexported fields
}
TaskWorker 是一个异步任务处理器,使用asynq库来处理任务队列
func NewTaskWorker ¶
func (*TaskWorker) GetMux ¶
func (tk *TaskWorker) GetMux() *asynq.ServeMux
GetMux 获取ServeMux引用,方便注册更多中间件
func (*TaskWorker) Handle ¶
func (tk *TaskWorker) Handle(pattern string, handler asynq.Handler)
Handle 注册一个asynq.Handler,用于处理特定模式的任务
func (*TaskWorker) HandleFunc ¶
HandleFunc 注册一个处理函数,用于处理特定模式的任务
func (*TaskWorker) RegisterHandlers ¶
func (tk *TaskWorker) RegisterHandlers(handlers TaskHandlerMap)
RegisterHandlers 注册一组处理函数,用于处理特定模式的任务
func (*TaskWorker) RunServer ¶
func (tk *TaskWorker) RunServer(sync ...bool)
RunServer 本身支持信号监听,同时阻塞在等待信号上,因此非独立执行worker服务的条件下应置于异步go routine中启动
type WebApplication ¶
type WebApplication struct {
FrameStarter
CoreStarter
}
WebApplication Web应用启动器,框架和核心启动器组合体,实现了 fiberhouse.FrameStarter 和 fiberhouse.CoreStarter 接口
Source Files
¶
- api_impl.go
- application_interface.go
- boot.go
- command_interface.go
- context_impl.go
- context_interface.go
- core_fiber_starter_impl.go
- core_gin_starter_impl.go
- core_starter_fiber_provider.go
- core_starter_gin_provider.go
- core_starter_manager.go
- ctx_core_adapter.go
- ctx_core_adaptor_manager.go
- ctx_fiber_adaptor_provider.go
- ctx_gin_adaptor_provider.go
- default.go
- frame_starter_impl.go
- frame_starter_manager.go
- frame_starter_provider.go
- global_utility.go
- json_codec_manager.go
- json_fiber_provider.go
- json_gin_provider.go
- json_sonic_fiber_provider.go
- json_sonic_gin_provider.go
- json_wraper_interface.go
- locator_interface.go
- model_interface.go
- option_func.go
- provider_impl.go
- provider_interface.go
- provider_location.go
- provider_manager_impl.go
- provider_type.go
- recover_config.go
- recover_error_handler_impl.go
- recover_interface.go
- recover_providers_manager_impl.go
- recover_recoveries_impl.go
- repository_impl.go
- response.go
- response_providers_manager_impl.go
- service_impl.go
- task.go
Directories
¶
| Path | Synopsis |
|---|---|
|
Package appconfig 提供应用配置管理功能,支持多格式配置文件加载、线程安全的配置读写操作和日志源管理。
|
Package appconfig 提供应用配置管理功能,支持多格式配置文件加载、线程安全的配置读写操作和日志源管理。 |
|
Package bootstrap 提供应用程序启动时的核心初始化功能,包括应用配置管理和日志系统的初始化。
|
Package bootstrap 提供应用程序启动时的核心初始化功能,包括应用配置管理和日志系统的初始化。 |
|
Package cache 提供高性能的多级缓存系统,支持本地缓存、远程缓存和二级缓存架构,内置多种缓存保护机制。
|
Package cache 提供高性能的多级缓存系统,支持本地缓存、远程缓存和二级缓存架构,内置多种缓存保护机制。 |
|
Package commandstarter 提供基于 cli.v2 的命令行应用启动器实现,负责命令行应用的完整生命周期管理和启动流程编排。
|
Package commandstarter 提供基于 cli.v2 的命令行应用启动器实现,负责命令行应用的完整生命周期管理和启动流程编排。 |
|
validate
Package validate 提供基于 go-playground/validator 的多语言验证器包装器,支持自定义验证规则和错误消息翻译。
|
Package validate 提供基于 go-playground/validator 的多语言验证器包装器,支持自定义验证规则和错误消息翻译。 |
|
database
|
|
|
dbmongo
Package dbmongo 提供基于 MongoDB 的数据库连接和模型操作功能。
|
Package dbmongo 提供基于 MongoDB 的数据库连接和模型操作功能。 |
|
dbmysql
Package dbmysql 提供基于 MySQL 的数据库连接和 GORM ORM 操作功能。
|
Package dbmysql 提供基于 MySQL 的数据库连接和 GORM ORM 操作功能。 |
|
command
command
|
|
|
docs
Package docs Code generated by swaggo/swag.
|
Package docs Code generated by swaggo/swag. |
|
Package exception 提供异常处理和错误响应功能,支持业务异常和验证异常两种类型。
|
Package exception 提供异常处理和错误响应功能,支持业务异常和验证异常两种类型。 |
|
Package globalmanager 提供全局对象管理功能,用于管理应用程序中的单例对象。
|
Package globalmanager 提供全局对象管理功能,用于管理应用程序中的单例对象。 |
|
provider
|
|
|
Package response 提供了统一的HTTP响应格式和高性能的响应对象管理功能。
|
Package response 提供了统一的HTTP响应格式和高性能的响应对象管理功能。 |
|
rpc
|
|