bean

package
v0.2.11 Latest Latest
Warning

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

Go to latest
Published: Mar 27, 2024 License: Apache-2.0 Imports: 8 Imported by: 7

Documentation

Index

Constants

View Source
const (
	KeySetOrder = "register.bean.order"
)

Variables

View Source
var (
	InitializingType = reflect.TypeOf((*Initializing)(nil)).Elem()
	DisposableType   = reflect.TypeOf((*Disposable)(nil)).Elem()
	ErrorType        = reflect.TypeOf((*error)(nil)).Elem()
)
View Source
var (
	DummyType  = reflect.TypeOf((*struct{})(nil)).Elem()
	DummyValue = reflect.ValueOf(struct{}{})
)
View Source
var CustomBeanFactoryOpts customBeanFactoryOpts

Functions

func CloneCustomBeanFactory added in v0.2.11

func CloneCustomBeanFactory(fac CustomBeanFactory, beanFunc ...interface{}) *defaultCustomBeanFactory

func NewContainer

func NewContainer(opts ...ContainerOpt) *defaultContainer

func NewCustomBeanFactory added in v0.2.8

func NewCustomBeanFactory(beanFunc interface{}, initMethod, destroyMethod string) *defaultCustomBeanFactory

func NewCustomBeanFactoryWithName added in v0.2.8

func NewCustomBeanFactoryWithName(beanFunc interface{}, names []string, initMethod, destroyMethod string) *defaultCustomBeanFactory

func NewCustomBeanFactoryWithOpts added in v0.2.10

func NewCustomBeanFactoryWithOpts(beanFunc interface{}, opts ...beanFactoryOpt) *defaultCustomBeanFactory

func RegisterBeanDefinitionCreator

func RegisterBeanDefinitionCreator(kind reflect.Kind, creator DefinitionCreator)

注册BeanDefinition创建器,使其能处理更多类型。 默认支持Pointer、Function

func SingletonFactory added in v0.2.8

func SingletonFactory(function interface{}) interface{}

Types

type Classifier added in v0.2.6

type Classifier interface {
	// 对象分类,判断对象是否实现某些接口,并进行相关归类。为了支持多协程处理,该方法应线程安全。
	// 注意:该方法建议只做归类,具体处理使用Process,不保证Processor的实现在此方法中做了相关处理。
	// 该方法在Bean Inject注入之后调用
	// return: bool 是否能够处理对象, error 处理是否有错误
	Classify(o interface{}) (bool, error)
}

type Container

type Container interface {
	// 注册对象
	// opts添加bean注册的配置,详情查看RegisterOpt
	Register(o interface{}, opts ...RegisterOpt) error

	// 根据名称注册对象
	// opts添加bean注册的配置,详情查看RegisterOpt
	RegisterByName(name string, o interface{}, opts ...RegisterOpt) error

	// 根据名称获得对象
	// return:o:对象,ok:如果成功为true,否则为false
	Get(name string) (o interface{}, ok bool)

	// 根据类型获得对象,值设置到参数中
	// return:ok:如果成功为true,否则为false
	GetByType(o interface{}) bool

	// 获得对象定义
	// return:ok:如果成功为true,否则为false
	GetDefinition(name string) (d Definition, ok bool)

	// 添加对象定义
	// return:失败返回错误
	PutDefinition(name string, definition Definition) error

	// 遍历所有对象定义
	// f:key为注册的名称(可能为系统自动生成或手工指定)value为对象定义
	// 返回true则继续遍历,返回false停止遍历。
	Scan(f func(key string, value Definition) bool)
}

type ContainerOpt added in v0.1.1

type ContainerOpt func(*defaultContainer)

func OptContainerEnableCache added in v0.1.1

func OptContainerEnableCache(flag bool) ContainerOpt

配置是否开启key缓存,用于提高scan的性能 true为开启,false为关闭 默认开启

type CustomBeanFactory added in v0.2.8

type CustomBeanFactory interface {
	// 返回或者创建bean的方法
	// 该方法可能包含一个或者多个参数,参数会在实例化时自动注入
	// 该方法只能有一个返回值,返回的值将被注入到依赖该类型值的对象中
	BeanFactory() interface{}

	// BeanFactory返回创建bean方法如果带参数,且参数需要指定注入名称时将根据InjectNames返回的名称列表进行匹配
	// 注意:
	// 1、如果所有参数都不需要名称匹配,则返回nil
	// 2、如果需要使用名称匹配则:返回的string数组长度需要与创建bean方法的常数个数一致
	// 3、如果需要部分匹配,则需要自动匹配的参数对应的name填入空字符串""
	InjectNames() []string

	// 获得Bean生命周期相关的方法名
	BeanLifeCycleMethodNames() map[LifeCycle]string

	//Deprecated: BeanFactory返回值包含的初始化方法名,可为空
	InitMethodName() string

	//Deprecated: BeanFactory返回值包含的销毁方法名,可为空
	DestroyMethodName() string
}

type Definition

type Definition interface {
	// 类型
	Type() reflect.Type

	// 名称
	Name() string

	// 获得值
	Value() reflect.Value

	// 获得注册的bean对象
	Interface() interface{}

	// 是否是可注入对象
	IsObject() bool

	// 在属性配置完成后调用
	AfterSet() error

	// 销毁对象
	Destroy() error

	// 对对象进行分类
	Classify(classifier Classifier) (bool, error)
}

func CreateBeanDefinition

func CreateBeanDefinition(o interface{}) (Definition, error)

type DefinitionCreator

type DefinitionCreator func(o interface{}) (Definition, error)

type Disposable

type Disposable interface {
	// 进入销毁阶段,应该尽快做回收处理并退出处理任务
	BeanDestroy() error
}

type Initializing

type Initializing interface {
	// 当初始化和注入完成时回调
	BeanAfterSet() error
}

type LifeCycle added in v0.2.10

type LifeCycle string
const (
	PreAfterSet  LifeCycle = "bean.PreAfterSet"
	PostAfterSet LifeCycle = "bean.PostAfterSet"
	PreDestroy   LifeCycle = "bean.PreDestroy"
	PostDestroy  LifeCycle = "bean.PostDestroy"
)

type RegisterOpt added in v0.0.4

type RegisterOpt func(setter Setter)

Bean注册配置,已支持的配置有: * bean.SetOrder(int) 配置bean注入顺序

func SetOrder added in v0.0.4

func SetOrder(order int) RegisterOpt

配置bean注入顺序

type Setter added in v0.0.4

type Setter interface {
	Set(key string, value interface{})
}

Jump to

Keyboard shortcuts

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