Documentation
ΒΆ
Index ΒΆ
- Variables
- func HealthCheck[T any](i *Injector) error
- func HealthCheckNamed(i *Injector, name string) error
- func Invoke[T any](i *Injector) (T, error)
- func InvokeNamed[T any](i *Injector, name string) (T, error)
- func MustInvoke[T any](i *Injector) T
- func MustInvokeNamed[T any](i *Injector, name string) T
- func MustShutdown[T any](i *Injector)
- func MustShutdownNamed(i *Injector, name string)
- func Override[T any](i *Injector, provider Provider[T])
- func OverrideNamed[T any](i *Injector, name string, provider Provider[T])
- func OverrideNamedValue[T any](i *Injector, name string, value T)
- func OverrideValue[T any](i *Injector, value T)
- func Provide[T any](i *Injector, provider Provider[T])
- func ProvideNamed[T any](i *Injector, name string, provider Provider[T])
- func ProvideNamedValue[T any](i *Injector, name string, value T)
- func ProvideValue[T any](i *Injector, value T)
- func Shutdown[T any](i *Injector) error
- func ShutdownNamed(i *Injector, name string) error
- type Healthcheckable
- type Injector
- func (i *Injector) Clone() *Injector
- func (i *Injector) CloneWithOpts(opts *InjectorOpts) *Injector
- func (i *Injector) HealthCheck() map[string]error
- func (i *Injector) ListInvokedServices() []string
- func (i *Injector) ListProvidedServices() []string
- func (i *Injector) Shutdown() error
- func (i *Injector) ShutdownOnSIGTERM() error
- type InjectorOpts
- type Provider
- type Service
- type ServiceEager
- type ServiceLazy
- type Shutdownable
Examples ΒΆ
- Injector.Clone
- Injector.HealthCheck
- Injector.ListInvokedServices (Invoked)
- Injector.ListInvokedServices (NotInvoked)
- Injector.ListProvidedServices
- Injector.Shutdown
- Invoke
- InvokeNamed
- MustInvoke
- MustInvokeNamed
- New
- NewWithOpts
- Override
- OverrideNamed
- OverrideNamedValue
- Provide
- ProvideNamed
- ProvideNamedValue
- ProvideValue
Constants ΒΆ
This section is empty.
Variables ΒΆ
View Source
var DefaultInjector = New()
Functions ΒΆ
func HealthCheck ΒΆ
func HealthCheckNamed ΒΆ
func Invoke ΒΆ
Example ΒΆ
injector := New()
type test struct {
foobar string
}
Provide(injector, func(i *Injector) (*test, error) {
return &test{foobar: "foobar"}, nil
})
value, err := Invoke[*test](injector)
fmt.Println(value)
fmt.Println(err)
Output: &{foobar} <nil>
func InvokeNamed ΒΆ
Example ΒΆ
injector := New()
type test struct {
foobar string
}
ProvideNamed(injector, "my_service", func(i *Injector) (*test, error) {
return &test{foobar: "foobar"}, nil
})
value, err := InvokeNamed[*test](injector, "my_service")
fmt.Println(value)
fmt.Println(err)
Output: &{foobar} <nil>
func MustInvoke ΒΆ
Example ΒΆ
injector := New()
type test struct {
foobar string
}
Provide(injector, func(i *Injector) (*test, error) {
return &test{foobar: "foobar"}, nil
})
value := MustInvoke[*test](injector)
fmt.Println(value)
Output: &{foobar}
func MustInvokeNamed ΒΆ
Example ΒΆ
injector := New()
type test struct {
foobar string
}
ProvideNamed(injector, "my_service", func(i *Injector) (*test, error) {
return &test{foobar: "foobar"}, nil
})
value := MustInvokeNamed[*test](injector, "my_service")
fmt.Println(value)
Output: &{foobar}
func MustShutdown ΒΆ
func MustShutdownNamed ΒΆ
func Override ΒΆ added in v1.2.0
Example ΒΆ
injector := New()
type test struct {
foobar string
}
Provide(injector, func(i *Injector) (*test, error) {
return &test{foobar: "foobar1"}, nil
})
Override(injector, func(i *Injector) (*test, error) {
return &test{foobar: "foobar2"}, nil
})
value, err := Invoke[*test](injector)
fmt.Println(value)
fmt.Println(err)
Output: &{foobar2} <nil>
func OverrideNamed ΒΆ added in v1.2.0
Example ΒΆ
injector := New()
type test struct {
foobar string
}
ProvideNamed(injector, "my_service", func(i *Injector) (*test, error) {
return &test{foobar: "foobar1"}, nil
})
OverrideNamed(injector, "my_service", func(i *Injector) (*test, error) {
return &test{foobar: "foobar2"}, nil
})
value, err := InvokeNamed[*test](injector, "my_service")
fmt.Println(value)
fmt.Println(err)
Output: &{foobar2} <nil>
func OverrideNamedValue ΒΆ added in v1.2.0
Example ΒΆ
injector := New()
type test struct {
foobar string
}
ProvideNamedValue(injector, "my_service", &test{foobar: "foobar1"})
OverrideNamedValue(injector, "my_service", &test{foobar: "foobar2"})
value, err := InvokeNamed[*test](injector, "my_service")
fmt.Println(value)
fmt.Println(err)
Output: &{foobar2} <nil>
func OverrideValue ΒΆ added in v1.2.0
func Provide ΒΆ
Example ΒΆ
injector := New()
type test struct {
foobar string
}
Provide(injector, func(i *Injector) (*test, error) {
return &test{foobar: "foobar"}, nil
})
value, err := Invoke[*test](injector)
fmt.Println(value)
fmt.Println(err)
Output: &{foobar} <nil>
func ProvideNamed ΒΆ
Example ΒΆ
injector := New()
type test struct {
foobar string
}
ProvideNamed(injector, "my_service", func(i *Injector) (*test, error) {
return &test{foobar: "foobar"}, nil
})
value, err := InvokeNamed[*test](injector, "my_service")
fmt.Println(value)
fmt.Println(err)
Output: &{foobar} <nil>
func ProvideNamedValue ΒΆ
Example ΒΆ
injector := New()
type test struct {
foobar string
}
ProvideNamedValue(injector, "my_service", &test{foobar: "foobar"})
value, err := InvokeNamed[*test](injector, "my_service")
fmt.Println(value)
fmt.Println(err)
Output: &{foobar} <nil>
func ProvideValue ΒΆ
Example ΒΆ
injector := New()
type test struct {
foobar string
}
ProvideValue(injector, &test{foobar: "foobar"})
value, err := Invoke[*test](injector)
fmt.Println(value)
fmt.Println(err)
Output: &{foobar} <nil>
func ShutdownNamed ΒΆ
Types ΒΆ
type Healthcheckable ΒΆ
type Healthcheckable interface {
HealthCheck() error
}
type Injector ΒΆ
type Injector struct {
// contains filtered or unexported fields
}
func New ΒΆ
func New() *Injector
Example ΒΆ
injector := New() ProvideNamedValue(injector, "PG_URI", "postgres://user:pass@host:5432/db") uri, err := InvokeNamed[string](injector, "PG_URI") fmt.Println(uri) fmt.Println(err)
Output: postgres://user:pass@host:5432/db <nil>
func NewWithOpts ΒΆ added in v1.1.0
func NewWithOpts(opts *InjectorOpts) *Injector
Example ΒΆ
injector := NewWithOpts(&InjectorOpts{
HookAfterShutdown: func(injector *Injector, serviceName string) {
fmt.Printf("service shutdown: %s\n", serviceName)
},
})
ProvideNamedValue(injector, "PG_URI", "postgres://user:pass@host:5432/db")
_ = injector.Shutdown()
Output: service shutdown: PG_URI
func (*Injector) Clone ΒΆ added in v1.2.0
Clone clones injector with provided services but not with invoked instances.
Example ΒΆ
injector := New() ProvideNamedValue(injector, "PG_URI", "postgres://user:pass@host:5432/db") injector2 := injector.Clone() services := injector2.ListProvidedServices() fmt.Println(services)
Output: [PG_URI]
func (*Injector) CloneWithOpts ΒΆ added in v1.2.0
func (i *Injector) CloneWithOpts(opts *InjectorOpts) *Injector
CloneWithOpts clones injector with provided services but not with invoked instances, with options.
func (*Injector) HealthCheck ΒΆ
Example ΒΆ
injector := New() Provide(injector, dbServiceProvider) health := injector.HealthCheck() fmt.Println(health)
Output: map[*do.dbService:<nil>]
func (*Injector) ListInvokedServices ΒΆ added in v1.1.0
Example (Invoked) ΒΆ
injector := New()
type test struct {
foobar string
}
ProvideNamed(injector, "SERVICE_NAME", func(i *Injector) (test, error) {
return test{foobar: "foobar"}, nil
})
_, _ = InvokeNamed[test](injector, "SERVICE_NAME")
services := injector.ListInvokedServices()
fmt.Println(services)
Output: [SERVICE_NAME]
Example (NotInvoked) ΒΆ
injector := New()
type test struct {
foobar string
}
ProvideNamed(injector, "SERVICE_NAME", func(i *Injector) (test, error) {
return test{foobar: "foobar"}, nil
})
services := injector.ListInvokedServices()
fmt.Println(services)
Output: []
func (*Injector) ListProvidedServices ΒΆ added in v1.1.0
Example ΒΆ
injector := New() ProvideNamedValue(injector, "PG_URI", "postgres://user:pass@host:5432/db") services := injector.ListProvidedServices() fmt.Println(services)
Output: [PG_URI]
func (*Injector) Shutdown ΒΆ
Example ΒΆ
injector := New() Provide(injector, dbServiceProvider) err := injector.Shutdown() fmt.Println(err)
Output: <nil>
func (*Injector) ShutdownOnSIGTERM ΒΆ added in v1.4.0
ShutdownOnSIGTERM listens for sigterm signal in order to graceful stop service. It will block until receiving a sigterm signal.
type InjectorOpts ΒΆ added in v1.1.0
type ServiceEager ΒΆ
type ServiceEager[T any] struct { // contains filtered or unexported fields }
type ServiceLazy ΒΆ
type ServiceLazy[T any] struct { // contains filtered or unexported fields }
type Shutdownable ΒΆ
type Shutdownable interface {
Shutdown() error
}
Source Files
ΒΆ
Click to show internal directories.
Click to hide internal directories.
