xdi

package
v1.4.4 Latest Latest
Warning

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

Go to latest
Published: Nov 5, 2020 License: MIT Imports: 5 Imported by: 0

README

xdi

References
  • xcolor
  • xreflect
  • xtesting*
Functions
  • type ServiceName string
  • (s *ServiceName) String()
  • type DiContainer struct {}
  • NewDiContainer() *DiContainer
  • (d *DiContainer) SetLogger(logger Logger)
  • (d *DiContainer) ProvideName(name ServiceName, service interface{})
  • (d *DiContainer) ProvideType(service interface{})
  • (d *DiContainer) ProvideImpl(interfacePtr interface{}, serviceImpl interface{})
  • (d *DiContainer) GetByName(name ServiceName) (service interface{}, exist bool)
  • (d *DiContainer) GetByNameForce(name ServiceName) interface{}
  • (d *DiContainer) GetByType(serviceType interface{}) (service interface{}, exist bool)
  • (d *DiContainer) GetByTypeForce(serviceType interface{}) interface{}
  • (d *DiContainer) GetByImpl(interfacePtr interface{}) (service interface{}, exist bool)
  • (d *DiContainer) GetByImplForce(interfacePtr interface{}) interface{}
  • (d *DiContainer) Inject(ctrl interface{}) (allInjected bool)
  • (d *DiContainer) MustInject(ctrl interface{})
  • SetLogger(logger Logger)
  • ProvideName(name ServiceName, service interface{})
  • ProvideType(service interface{})
  • ProvideImpl(interfacePtr interface{}, serviceImpl interface{})
  • GetByName(name ServiceName) (service interface{}, exist bool)
  • GetByNameForce(name ServiceName) interface{}
  • GetByType(serviceType interface{}) (service interface{}, exist bool)
  • GetByTypeForce(serviceType interface{}) interface{}
  • GetByImpl(interfacePtr interface{}) (service interface{}, exist bool)
  • GetByImplForce(interfacePtr interface{}) interface{}
  • Inject(ctrl interface{}) (allInjected bool)
  • MustInject(ctrl interface{})
  • type Logger interface {}
  • DefaultLogger() Logger
  • SilentLogger() Logger

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetByImpl added in v1.4.2

func GetByImpl(interfacePtr interface{}) (service interface{}, exist bool)

GetByImpl returns a service by interface pointer, panic when wrong interfacePtr.

func GetByImplForce added in v1.4.2

func GetByImplForce(interfacePtr interface{}) interface{}

GetByImplForce returns a service by serviceType, panic when wrong interfacePtr or service not found.

func GetByName

func GetByName(name ServiceName) (service interface{}, exist bool)

GetByName returns a service by ServiceName.

func GetByNameForce

func GetByNameForce(name ServiceName) interface{}

GetByNameForce returns a service by ServiceName, panic when service not found.

func GetByType

func GetByType(serviceType interface{}) (service interface{}, exist bool)

GetByType returns a service by serviceType.

func GetByTypeForce

func GetByTypeForce(serviceType interface{}) interface{}

GetByTypeForce returns a service by serviceType, panic when service not found.

func Inject

func Inject(ctrl interface{}) (allInjected bool)

Inject injects fields into struct by di tag, and returns if all fields with di tag is injected. Example:

`di:""`       // -> ignore
`di:"-"`      // -> ignore
`di:"~"`      // -> auto inject
`di:"name"`   // -> inject by name

func MustInject

func MustInject(ctrl interface{})

MustInject injects fields into struct, same with Inject, but panic when not all field with di tag is injected.

func ProvideImpl

func ProvideImpl(interfacePtr interface{}, serviceImpl interface{})

ProvideImpl provides a service using the interface type, panic when wrong interfacePtr or nil serviceImpl.

func ProvideName

func ProvideName(name ServiceName, service interface{})

ProvideName provides a service using a ServiceName, panic when name is `~` (preserve name).

func ProvideType

func ProvideType(service interface{})

ProvideType provides a service using its type, panic when service is nil.

func SetLogger added in v1.4.2

func SetLogger(logger Logger)

SetLogger sets another Logger for DiContainer.

xdi.SetLogger(xdi.DefaultLogger()) // set default logger
xdi.SetLogger(xdi.SilentLogger())  // disable logger

Types

type DiContainer

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

DiContainer represents a container for DI.

func NewDiContainer

func NewDiContainer() *DiContainer

NewDiContainer creates a default DiContainer.

func (*DiContainer) GetByImpl added in v1.4.2

func (d *DiContainer) GetByImpl(interfacePtr interface{}) (service interface{}, exist bool)

GetByImpl returns a service by interface pointer, panic when wrong interfacePtr.

func (*DiContainer) GetByImplForce added in v1.4.2

func (d *DiContainer) GetByImplForce(interfacePtr interface{}) interface{}

GetByImplForce returns a service by serviceType, panic when wrong interfacePtr or service not found.

func (*DiContainer) GetByName

func (d *DiContainer) GetByName(name ServiceName) (service interface{}, exist bool)

GetByName returns a service by ServiceName.

func (*DiContainer) GetByNameForce

func (d *DiContainer) GetByNameForce(name ServiceName) interface{}

GetByNameForce returns a service by ServiceName, panic when service not found.

func (*DiContainer) GetByType

func (d *DiContainer) GetByType(serviceType interface{}) (service interface{}, exist bool)

GetByType returns a service by serviceType.

func (*DiContainer) GetByTypeForce

func (d *DiContainer) GetByTypeForce(serviceType interface{}) interface{}

GetByTypeForce returns a service by interface pointer, panic when service not found.

func (*DiContainer) Inject

func (d *DiContainer) Inject(ctrl interface{}) (allInjected bool)

Inject injects fields into struct by di tag, and returns if all fields with di tag is injected. Example:

`di:""`       // -> ignore
`di:"-"`      // -> ignore
`di:"~"`      // -> auto inject
`di:"name"`   // -> inject by name

func (*DiContainer) MustInject

func (d *DiContainer) MustInject(ctrl interface{})

MustInject injects fields into struct, same with Inject, but panic when not all field with di tag is injected.

func (*DiContainer) ProvideImpl

func (d *DiContainer) ProvideImpl(interfacePtr interface{}, serviceImpl interface{})

ProvideImpl provides a service using the interface type, panic when wrong interfacePtr or nil serviceImpl. Example:

ProvideImpl((*Interface)(nil), &Struct{})
GetByType(Interface(nil))

func (*DiContainer) ProvideName

func (d *DiContainer) ProvideName(name ServiceName, service interface{})

ProvideName provides a service using a ServiceName, panic when using `~` or nil service.

func (*DiContainer) ProvideType

func (d *DiContainer) ProvideType(service interface{})

ProvideType provides a service using its type, panic when service is nil.

func (*DiContainer) SetLogger added in v1.4.2

func (d *DiContainer) SetLogger(logger Logger)

SetLogger sets another Logger for DiContainer.

SetLogger(xdi.DefaultLogger()) // set default logger
SetLogger(xdi.SilentLogger())  // disable logger

type LogLevel added in v1.4.3

type LogLevel int8
const (
	LogName LogLevel = 1 << iota
	LogType
	LogImpl
	LogInject
	LogAll    = LogName | LogType | LogImpl | LogInject
	LogSilent = LogLevel(0)
)

type Logger added in v1.4.2

type Logger interface {
	// LogName logs when DiContainer.ProvideName invoked.
	LogName(name, typ string)

	// LogType logs when DiContainer.ProvideType invoked.
	LogType(typ string)

	// LogImpl logs when DiContainer.ProvideImpl invoked.
	LogImpl(interfaceTyp, implTyp string)

	// LogInject logs when DiContainer.Inject invoked.
	LogInject(parentTyp, fieldTyp, fieldName string)
}

Logger represents xdi.DiContainer's logger function.

func DefaultLogger added in v1.4.2

func DefaultLogger(level LogLevel) Logger

DefaultLogger creates a defaultLogger.

type ServiceName

type ServiceName string

ServiceName represents a global service name.

func (*ServiceName) String

func (s *ServiceName) String() string

String returns a string type of ServiceName.

Jump to

Keyboard shortcuts

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