gobean

module
v1.1.15 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 7, 2023 License: MIT

README

gobean

go get -u github.com/erkesi/gobean

每一个模块,都有测试用例,可以通过测试用例了解具体的使用方法

glogs 包


import github.com/erkesi/gobean/glogs

打印 gobean 项目下的包 debug 级别的日志

方法
初始化全局 Logger 实例

glogs.Init(logger Logger)

ginjects 包

依赖注入


import github.com/erkesi/gobean/ginjects

在依赖关系的顺序下,再按照实例注入的优先级和顺序,完成实例的生命周期的管理

方法
实例的生命周期

type B struct{
}

type A struct{
	B *B `inject:""`
}

// Init, 实现 ginjects.ObjectInit 接口,完成实例的初始化
func (a *A) Init() {
}

// Close, ginjects.ObjectClose 接口,完成实例的销毁
func (a *A) Close(){
}

按照类型注入实例
  • 参数 opts: 可以为 ginjects.ProvideWithPriority(priority int) , 顺序【依赖关系与优先级(从大到小)】完成实例的初始化

ginjects.ProvideByValue(value interface{}, opts ...ProvideOptFunc)

依据类型获取实例

ginjects.ObtainByType(value interface{}) interface{}

按照命名注入实例
  • 参数 opts: 可以为 ginjects.ProvideWithPriority(priority int) , 按照顺序【依赖关系与优先级(从大到小)】完成实例的初始化

ginjects.ProvideByName(name string, value interface{}, opts ...ProvideOptFunc)

按照命名获取实例

ginjects.ObtainByName(name string) interface{}

完成依赖注入以及按照顺序【依赖关系与优先级(从大到小)】完成实例的初始化(Init())

ginjects.Init()

实例初始化的逆向顺序销毁实例(Close())

ginjects.Close()

按照依赖注入的关系打印实例列表

ginjects.PrintObjects()

gevents 包

事件的发布与订阅


import github.com/erkesi/gobean/gevents

基于 ginjects 依赖注入的能力

使用示例:event_test.go

方法
注册事件处理器

gevents.Register(executors ...Executor)

设置事件默认处理器

gevents.SetDefaultExecutor(executor Executor)

发布事件

发布(接口:Publisher

Publish(ctx context.Context, event interface{}, opts ...PublishOpt) error

使用默认的事件发布器

&DefaultPublisher{}

gextpts 包

扩展点能力


import github.com/erkesi/gobean/gextpts

基于 ginjects 依赖注入的能力

执行的时候,依据扩展点接口,找到多个实现,按照优先级逐个匹配,如果匹配(Match() == true),则执行后返回。

使用示例:extension_pointer_test.go

方法
注册扩展点实例

gextpts.Register(et ExtensionPointer, opts ...ExtPtFunc)

执行

gextpts.Execute(ctx context.Context, f interface{}, args ...interface{}) (bool, interface{})

gextpts.ExecuteWithErr(ctx context.Context, f interface{}, args ...interface{}) (bool, interface{}, error)

gstatemachines 包

简单状态机实现

  • 定义状态转移流程
  • 定义状态接口
  • 状态机执行

import github.com/erkesi/gobean/gstatemachines

使用示例:state_machine_test.go

gapplications 包

应用启动与销毁回调函数的注册以及使用


import github.com/erkesi/gobean/gapplications

使用示例:application_test.go

方法
注册应用启动回调函数
  • 参数 opts: 可以为 gapplications.CallbackWithPriority(priority int) , 顺序【优先级(从大到小)】执行 callback

gapplications.AddInitCallback(callback appStateCallback, opts ...OptFunc)

注册应用销毁回调函数
  • 参数 opts: 可以为 gapplications.CallbackWithPriority(priority int) , 顺序【优先级(从大到小)】执行 callback

gapplications.AddCloseCallback(callback appStateCallback, opts ...OptFunc)

应用初始化,按照优先级顺序(从大到小)调启动函数

gapplications.Init()

应用销毁,按照优先级顺序(从大到小)调销毁函数

gapplications.Close()

gobean/gstreamings

数据流处理,source -> transform -> sink

gobean/gstreams

集合数据流式处理,类似 java stream

Directories

Path Synopsis
example module
Package mock_gevents is a generated GoMock package.
Package mock_gevents is a generated GoMock package.
Package mock_gextpts is a generated GoMock package.
Package mock_gextpts is a generated GoMock package.
Package inject provides a reflect based injector.
Package inject provides a reflect based injector.
Package mock_glogs is a generated GoMock package.
Package mock_glogs is a generated GoMock package.
gstream module
gstreamings module
gstreams module
inject module
log module

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL