inject

package
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Sep 27, 2021 License: MIT Imports: 2 Imported by: 1

Documentation

Index

Constants

View Source
const (
	InjectTag    = "inject"
	InjectTagVal = "-"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type BeanMapper

type BeanMapper map[reflect.Type]reflect.Value

type GetterFunc

type GetterFunc func(rt reflect.Type) interface{}

type Injecter

type Injecter struct {
	// contains filtered or unexported fields
}

func New

func New() *Injecter

func (*Injecter) Apply

func (injecter *Injecter) Apply(obj interface{})

func (*Injecter) Configs

func (injecter *Injecter) Configs(objs ...interface{})

func (*Injecter) Get

func (injecter *Injecter) Get(key interface{}, f GetterFunc) (ni interface{})

func (*Injecter) Invoke

func (injecter *Injecter) Invoke(f interface{}) ([]interface{}, error)

func (*Injecter) Mapping

func (injecter *Injecter) Mapping(key, val interface{})

func (*Injecter) Set

func (injecter *Injecter) Set(objs ...interface{})

type Injector

type Injector interface {
	//Apply 对对象进行递归注入,递归调用 Apply 方法, obj必须是指针结构体
	//需要进行注入的字段,必须打上tag: `inject:"-"`
	//会优先从容器里获取注入对象,没有则实例一个,并把实例对象放入容器保存
	//所有的注入对象都是单例,使用的时候需要注意
	Apply(obj interface{})

	//Config 会对对象进行依赖注入
	//并且, 会自动调用对象的所有方法,如果对象方法有且仅有一个返回值,那么返回值会保存再 Mapper 里面
	//对象返回的返回值可以是容器或者指针struct
	Configs(objs ...interface{})
}

type Invoker

type Invoker interface {
	//Invoke 尝试把f当做func执行,如果f不是func会panic;
	//在容器里尝试获取f的参数对应的值,作为参数传入执行f,如果没有相应的值会执行失败,返回error
	//f的参数值可以通过 Mapper.Set 初始化
	Invoke(f interface{}) ([]interface{}, error)
}

type Mapper

type Mapper interface {
	//Get 从容器里获取对象
	//key可以是 reflect.Type,也可以是某种类型或者接口和变量
	//f, 单容器里面没有找到相应的值的时候,会尝试调用f
	Get(key interface{}, f GetterFunc) interface{}

	//Set 把对象放入容器里,对象可以是任意类型
	//注意,同一种类型只会有一个值
	Set(objs ...interface{})

	//Mapping 设置映射关系,用于接口类型和实体的映射
	//key必须是指针类型的接口,例如:(*MyInterface)(nil)
	//val必须是指针类型的结构体
	Mapping(key, val interface{})
}

Jump to

Keyboard shortcuts

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