使用 wire 实现 golang 依赖注入
最近,在负责一个 Go 项目开发。项目分层为:handler 层、service 层 dao 层。其中 handler 层依赖 service 层,service 层依赖不同基础组件以及 dao 层。这样,只要 handler 层、service 层的依赖项发生了变化,对应层的代码都得重新调整,非常繁琐。为此,在网上搜索了 Go 依赖注入相关的资料,得出,常用的 Go 依赖注入框架有:dig、inject、wire。其中 dig、inject 是在运行时注入依赖,对代码有一定的侵入性。而 wire 是代码生成工具,生成的内容也是普通的 Go 代码,只不过,在运行时不再依赖 wire。
本文主要是在自己使用 wire 后,对 wire 用户指南进行完整阅读翻译并记录。