应用依赖注入 (di) 器皿可以轻松地获得、实例化和配置依赖项。要从 di 容器里获得依赖项,请选择 get 方式,此方法接受一个接口类型做为参数并返回该类型的实例化对象。可以通过使用像 wire 这种 di 库来简化这一过程,wire 应用 wire.build 函数自动分析和引入依赖项,不用手动启用 get 方式。 内容来自zvvq
本文来自zvvq
Go 框架中从依赖注入容器里获得依赖项在 Go 框架中,依赖注入 (DI) 是一种管理依存关系的强大技术,它允许您将目标间的耦合度降到最低。应用 DI 器皿,您可以轻松地获得、实例化和配置依赖项,而无需显式地建立他们。 copyright zvvq
应用 DI 器皿获得依赖项要从 DI 容器里获得依赖项,您可以使用 Get 方式。此方法接受一个接口类型做为参数,并返回该类型的实例化对象。
内容来自samhan666
typeMyServiceinterface{
DoSomething() 内容来自zvvq
} zvvq好,好zvvq
funcmain(){ 内容来自samhan
container:=NewContainer()
zvvq.cn
container.Bind(reflect.TypeOf((MyService)(nil)),func()MyService{return&myServiceImpl{}}) zvvq
varserviceMyService zvvq.cn
iferr:=container.Get(&service);err!=nil{ 本文来自zvvq
log.Fatal(err) 内容来自samhan
}
内容来自samhan
service.DoSomething()
} 本文来自zvvq
实战案例:应用 Wire 开展DIWire是 Go 语言中流行的 DI 库。它提供了一个简约、高效且无反射的方法去管理依存关系。
以下是应用 Wire 获得依赖项的实战案例:
内容来自samhan666
//providers.go 内容来自zvvq
packagemain copyright zvvq
import"github.com/google/wire"
funcProvideMyService()MyService{ zvvq好,好zvvq
return&myServiceImpl{}
}
varMyServiceSet=wire.NewSet(ProvideMyService)
zvvq好,好zvvq
//main.go
packagemain zvvq
import"github.com/google/wire"
zvvq好,好zvvq
funcmain(){ 本文来自zvvq
wire.Build(MyServiceSet) 内容来自zvvq,别采集哟
}
根据使用 Wire 和 wire.Build 函数,您会自动分析和引入依赖项,不用手动启用 Get 方式。
zvvq.cn
以上就是golang框架中怎样从依赖注入容器里获取一个依赖项的详细内容,大量请关注其他类似文章! zvvq好,好zvvq