Container 是一款为 Go 语言开发的运行时依赖注入库。Go 语言的语言特性决定了实现一款类型安全的依赖注入容器并不太容易,因此 Container 大量使用了 Go 的反射机制。如果你的使用场景对性能要求并不是那个苛刻,那 Container 非常适合你。
并不是说对性能要求苛刻的环境中就不能使用了,你可以把 Container 作为一个对象依赖管理工具,在你的业务初始化时获取依赖的对象。
使用方式
go get github.com/mylxsw/container
containier.New
cc := container.New()
此时就创建了一个空的容器。
container.NewWithContext(ctx)context.Context
对象绑定
在使用之前,我们需要先将我们要托管的对象告诉容器。Container 支持三种类型的对象管理
SingletonPrototypeValue
errorerrorMustSingletonMustSingletonpanic
SingletonPrototypeBindValueErrRepeatedBind
MockOverride
SingletonOverridePrototypeOverrideBindValueOverride
OverrideOverride
SingletonOverrideSingletonOverrideSingletonOverrideSingletonSingleton
单例对象
Singleton
Singleton(initialize interface{}) errorinitialize
initialize
cc.Singleton(func() UserRepo {