Documentation ¶
Index ¶
- func GetByImpl(interfacePtr interface{}) (service interface{}, exist bool)
- func GetByImplForce(interfacePtr interface{}) interface{}
- func GetByName(name ServiceName) (service interface{}, exist bool)
- func GetByNameForce(name ServiceName) interface{}
- func GetByType(serviceType interface{}) (service interface{}, exist bool)
- func GetByTypeForce(serviceType interface{}) interface{}
- func Inject(ctrl interface{}) (allInjected bool)
- func MustInject(ctrl interface{})
- func ProvideImpl(interfacePtr interface{}, serviceImpl interface{})
- func ProvideName(name ServiceName, service interface{})
- func ProvideType(service interface{})
- func SetLogger(logger Logger)
- type DiContainer
- func (d *DiContainer) GetByImpl(interfacePtr interface{}) (service interface{}, exist bool)
- func (d *DiContainer) GetByImplForce(interfacePtr interface{}) interface{}
- func (d *DiContainer) GetByName(name ServiceName) (service interface{}, exist bool)
- func (d *DiContainer) GetByNameForce(name ServiceName) interface{}
- func (d *DiContainer) GetByType(serviceType interface{}) (service interface{}, exist bool)
- func (d *DiContainer) GetByTypeForce(serviceType interface{}) interface{}
- func (d *DiContainer) Inject(ctrl interface{}) (allInjected bool)
- func (d *DiContainer) MustInject(ctrl interface{})
- func (d *DiContainer) ProvideImpl(interfacePtr interface{}, serviceImpl interface{})
- func (d *DiContainer) ProvideName(name ServiceName, service interface{})
- func (d *DiContainer) ProvideType(service interface{})
- func (d *DiContainer) SetLogger(logger Logger)
- type LogLevel
- type Logger
- type ServiceName
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.
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 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
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.