inject

package
v1.1.40 Latest Latest
Warning

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

Go to latest
Published: Jan 14, 2024 License: Apache-2.0 Imports: 6 Imported by: 0

README

Dependency injection for go,similiar to Guice

Documentation

Overview

Package inject 提供类似Guice Injector的依赖注入功能,可以用于简化服务的组装

Index

Constants

View Source
const EnvConfRoot = "conf_root"

EnvConfRoot conf root

Variables

This section is empty.

Functions

func IsInjected

func IsInjected(i interface{}) (ok bool, injected bool)

IsInjected 判断i是否实现了Injected接口 当i实现了Injected接口时,ok为true,这时injected表示接口i是否已经完成了注入

Types

type ConfigModuler added in v1.1.17

type ConfigModuler interface {
	ConfModule() (module *Module, err error)
}

ConfigModuler get module depends on the config

type Injected

type Injected interface {
	// 是否已经完成注入
	IsInjected() bool
}

Injected 判断是否已经完成注入

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 NewInjector

func NewInjector(modules []*Module) *Injector

NewInjector 创建一个Injector

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

func (p *Injector) GetInstance(name string, expectedType reflect.Type) interface{}

GetInstance 从Injector中查找与name和expectedType匹配的实例,如果没有找到返回nil

func (*Injector) GetInstanceByPrototype

func (p *Injector) GetInstanceByPrototype(name string, prototype interface{}) interface{}

GetInstanceByPrototype 从Injector重查找与name和prototype匹配的实例,如果没有找到返回nil

func (*Injector) GetInstancesByPrototype

func (p *Injector) GetInstancesByPrototype(prototype interface{}) []interface{}

GetInstancesByPrototype 从Injector里查找与prototype匹配的所有实例

func (*Injector) Initialize

func (p *Injector) Initialize() error

Initialize 初始化injector

func (*Injector) RequireInject

func (p *Injector) RequireInject(targets ...interface{})

RequireInject 由Injector向targets注入服务

func (*Injector) RequireInjectWithOverrideTags

func (p *Injector) RequireInjectWithOverrideTags(target interface{}, injectTags map[string]string)

RequireInjectWithOverrideTags 由Injector向target注入服务,injectTags用于覆盖target struct字段中定义的inject tag

func (*Injector) Start

func (p *Injector) Start() error

Start 启动服务

func (*Injector) Stop

func (p *Injector) Stop() error

Stop 停止服务

func (*Injector) String

func (p *Injector) String() string

type Module

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

Module 提供Guice Module的功能

func Merge

func Merge(modules ...[]*Module) []*Module

Merge 合并Module

func NewModule

func NewModule() *Module

NewModule 创建新的Module

func (*Module) Append added in v1.1.4

func (p *Module) Append(src *Module)

Append 将src中的绑定追加到本module

func (*Module) Bind

func (p *Module) Bind(instance interface{})

Bind 添加不带名称的绑定

func (*Module) BindWithName

func (p *Module) BindWithName(name string, instance interface{})

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

func (p *Module) BindWithProvider(name string, provider Provider)

BindWithProvider 通过Provider提供带名称的绑定功能

func (*Module) BindWithProviderFunc

func (p *Module) BindWithProviderFunc(name string, providerFunc ProviderFunc)

BindWithProviderFunc 通过Provider提供带名称的绑定功能

func (*Module) IsBind added in v1.1.20

func (p *Module) IsBind(instance interface{}, name string) bool

IsBind check if the instance has been binded

type Provider

type Provider interface {
	// GetInstance 用于创建一个实例
	GetInstance() interface{}
}

Provider 提供类似Guice Provider的功能,用于创建一个对象

type ProviderFunc

type ProviderFunc func() interface{}

ProviderFunc 定义用于创建一个对象的函数类型

Jump to

Keyboard shortcuts

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