Documentation
¶
Overview ¶
Package inject 提供类似Guice Injector的依赖注入功能,可以用于简化服务的组装
Index ¶
- Constants
- func IsInjected(i interface{}) (ok bool, injected bool)
- type ConfigModuler
- type Injected
- type Injector
- func (p *Injector) GetInstance(name string, expectedType reflect.Type) interface{}
- func (p *Injector) GetInstanceByPrototype(name string, prototype interface{}) interface{}
- func (p *Injector) GetInstancesByPrototype(prototype interface{}) []interface{}
- func (p *Injector) Initialize() error
- func (p *Injector) RequireInject(targets ...interface{})
- func (p *Injector) RequireInjectWithOverrideTags(target interface{}, injectTags map[string]string)
- func (p *Injector) Start() error
- func (p *Injector) Stop() error
- func (p *Injector) String() string
- type Module
- func (p *Module) Append(src *Module)
- func (p *Module) Bind(instance interface{})
- func (p *Module) BindWithName(name string, instance interface{})
- func (p *Module) BindWithNameOverrideTags(name string, instance interface{}, injectTags map[string]string)
- func (p *Module) BindWithProvider(name string, provider Provider)
- func (p *Module) BindWithProviderFunc(name string, providerFunc ProviderFunc)
- func (p *Module) IsBind(instance interface{}, name string) bool
- type Provider
- type ProviderFunc
Constants ¶
const EnvConfRoot = "conf_root"
EnvConfRoot conf root
Variables ¶
This section is empty.
Functions ¶
func IsInjected ¶
IsInjected 判断i是否实现了Injected接口 当i实现了Injected接口时,ok为true,这时injected表示接口i是否已经完成了注入
Types ¶
type ConfigModuler ¶ added in v1.1.17
ConfigModuler get module depends on the config
type Injector ¶
type Injector struct {
// contains filtered or unexported fields
}
Injector is a injector like Guice Injector
type InjectStruct struct{ s ServiceInterface{} `inject:"<name|_>,[optional]"` }
func SetupInjector ¶
func SetupInjector(config c.Configurer, addonConfig string, env string, modules ...*Module) (*Injector, error)
SetupInjector 从env指定的环境配置初始化配置,构建Injector
func SetupInjectorWithLoader ¶
func SetupInjectorWithLoader(loader c.ConfigLoader, config c.Configurer, addonConfig string, env string, modules ...*Module) (*Injector, error)
SetupInjectorWithLoader 从env指定的环境配置初始化配置,构建Injector
func (*Injector) GetInstance ¶
GetInstance 从Injector中查找与name和expectedType匹配的实例,如果没有找到返回nil
func (*Injector) GetInstanceByPrototype ¶
GetInstanceByPrototype 从Injector重查找与name和prototype匹配的实例,如果没有找到返回nil
func (*Injector) GetInstancesByPrototype ¶
func (p *Injector) GetInstancesByPrototype(prototype interface{}) []interface{}
GetInstancesByPrototype 从Injector里查找与prototype匹配的所有实例
func (*Injector) RequireInject ¶
func (p *Injector) RequireInject(targets ...interface{})
RequireInject 由Injector向targets注入服务
func (*Injector) RequireInjectWithOverrideTags ¶
RequireInjectWithOverrideTags 由Injector向target注入服务,injectTags用于覆盖target struct字段中定义的inject tag
type Module ¶
type Module struct {
// contains filtered or unexported fields
}
Module 提供Guice Module的功能
func (*Module) BindWithName ¶
BindWithName 添加带名称的绑定
func (*Module) BindWithNameOverrideTags ¶
func (p *Module) BindWithNameOverrideTags(name string, instance interface{}, injectTags map[string]string)
BindWithNameOverrideTags 添加带名称的绑定,injectTags用于覆盖instance中struct field中field中定义的inject tag
func (*Module) BindWithProvider ¶
BindWithProvider 通过Provider提供带名称的绑定功能
func (*Module) BindWithProviderFunc ¶
func (p *Module) BindWithProviderFunc(name string, providerFunc ProviderFunc)
BindWithProviderFunc 通过Provider提供带名称的绑定功能