Wire实现Golang依赖注入一、什么是依赖注入简单来说,就是在项目开发中,我们经常遇到一直情况,实例A的创建会依赖于实例B的创建,并且在实例A的生命周期内,持有对实例B的访问权限。
二、为什么要使用依赖注入如果不适用依赖注入的话会有以下风险:
全局变量⼗分不安全,存在覆写的可能。
资源散落在各处,可能重复创建,浪费内存,后续维护能⼒极差。
提⾼循环依赖的⻛险。
全局变量的引⼊提⾼单元测试的成本
在使用依赖注入后,可以方便我们的代码进行维护。
三、Golang依赖注入目前来说我的解决方案是通过Google的Wire去实现Golang依赖注入
Wire对比与其他在运行阶段依靠反射实现依赖注入的方式来说,优势在于能在编译期实现依赖注入,如果依赖注⼊有问题,那么在代码⽣成时就会抛出异常,并不会拖到运⾏时暴露,更便于我们进行debug。
3.1 安装Wire1go install github.com/google/wire/cmd/wire@latest
3.2 代码实现123456789101112131415161718func initWebServer() *gin.Engi ...