随笔 - 173,  文章 - 0,  评论 - 0,  阅读 - 10万

https://github.com/google/wire

代码生成器(注入工具)。

详见文档: 

https://studygolang.com/articles/22266?fr=sidebar

一. 关于依赖问题

1 func wireApp(*dependencyInject) (AppServer, func(), error) {
2     panic(wire.Build(Layer.ProviderSet,  newApp))
3 }

1. 总入口注入

wireApp是依赖总入口,将相关依赖基础入参,通过调用wireApp进行注入。

2. 二次注入

到了函数体内,其中Layer.ProviderSet, 实际为wire.NewSet()函数,这个函数也有入参,在这里相当于进行二级注入。

这个注入可以有很多个(很多个wire.NewSet()), newApp为最终呈现的一个服务函数,这个里面也会依赖到注入的数据。

3. 根据注入进行build

即 wire.Build()函数的执行,进行串联注入所用的数据。

二. 关于依赖报错问题 

下面只是一个例子···

1  inject wireApp: unused provider set "ProviderSet"

provider的报错原因很简单,是因为在wire生成的时候,会生成不同的变量,来进行注入。

如果在生成的过程中,provider根据内容生成的变量,在下一步的执行中,没有找到injection的地方,那么在 dependency injection(依赖注入)的过程中,就会触发golang的语法错误

这个语法错误就是:变量没有任何调用的地方,作用到wire流程上,就会是 unused 报错。

除了上述的例子外,还会有依赖到的入参,没有生成导致也会在wire执行的时候报错···

基本上wire在使用过程中,多报错,多跟踪报错就能发现问题···

 

posted on   黑熊一只  阅读(121)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示