Wire 依赖注入
在各个组件之间的依赖关系中,通常鼓励显式初始化,而不是全局变量传递。
所以通过 Wire 进行初始化代码,可以很好地解决组件之间的耦合,以及提高代码维护性。
Wire 具有两个基本概念:Provider 和 Injector。
在 Kratos 中,主要分为 server、service、biz、data 服务模块,会通过 Wire 进行模块顺序的初始化;
在每个模块中,只需要一个 ProviderSet 提供者集合,就可以在 wire 中进行依赖注入;
然后通过 wire.go 中定义所有 ProviderSet 可以完成依赖注入配置。
通过 wire 初始化组件,需要定义对应的 wire.go,以及 kratos application 用于启动管理。
在项目的 main 目录中,运行 wire 进行生成编译期依赖注入代码: