首页 > 其他分享 >go学习笔记——wire依赖注入

go学习笔记——wire依赖注入

时间:2024-05-12 14:53:01浏览次数:23  
标签:wire app cmd 笔记 github go com

wire是google开源的使用依赖注入来自动连接组件的代码生成工具

安装

go install github.com/google/wire/cmd/wire@latest

官方使用文档:

https://github.com/google/wire/blob/main/docs/guide.md

文档参考:

手把手,带你从零封装Gin框架(十二):使用 Wire 依赖注入重构

golang中的依赖注入之wire

参考项目:

https://github.com/jassue/gin-wire

如果遇到下面报错

wire: /xxx/cmd/server/wire.go:17:1: inject wireApp: unused provider set "ProviderSet"
wire: xx/cmd/server: generate failed
wire: at least one generate failure

这是因为设置了依赖注入的方法没能找到调用者,在gin项目中,调用的顺序一般是data层->service层->handler层->router层->httpserver->app

所以需要把调用的ProviderSet在wire.go文件中完整的写出来,不能出现中间中断的情况,wire_gen才能正常的生成

比如写了data,service,router,httpserver和app,但是漏了handler,这样就会报上面的错误

如果只写了router,httpserver和app,这样是可以正常生成的

可以参考:https://github.com/jassue/gin-wire/blob/main/cmd/app/wire_gen.go 中的调用层次

 

标签:wire,app,cmd,笔记,github,go,com
From: https://www.cnblogs.com/tonglin0325/p/18187825

相关文章

  • MIT6S081课程笔记
    MIT6S081课程笔记mit6s081lecturenotesCreated:2023-06-05T20:26+08:00Published:2024-05-12T12:13+08:00Categories:OperatingSystem关于这门课程使用到的资料:schedule:https://pdos.csail.mit.edu/6.S081/2020/schedule.htmlschedule可以认为提供了资源(如pdf、......
  • FFmpeg开发笔记(二十)Linux环境给FFmpeg集成AVS3解码器
    ​AVS3是中国AVS工作组制定的第三代音视频编解码技术标准,也是全球首个已推出的面向8K及5G产业应用的视频编码标准。AVS工作组于2019年3月9日完成第三代AVS视频标准(AVS3)基准档次的制订工作,参考软件的测试表明,AVS3基准档次的性能比上一代标准AVS2和HEVC提升了约30%。libuavs3d是AVS......
  • Android开发&Kotlin学习笔记
    为了做《基于安卓定位的考勤系统》,学了一些杂乱的知识,在这里简单记录一下。除了在C#桌面应用开发中感性的体会到了些XML布局的知识以及课上学习的Java知识,其他也算是零基础了。GoogleAndroidDeveloper的课程2023/10/25:跟着官方文档先快速入门一下基本内容。截至目前来看官方......
  • 如何编译Godot(Godot & Godot with C#)
    要在Windows下编译Godot,需要以下环境:VisualStudioCommunity:使用最新版本。MinGW-w64:可以替代VisualStudio。请务必将其安装/配置为使用posix线程模型。使用MinGW编译主分支时,需要GCC9或更高版本。Python3.6+:确保在安装程序中启用将Python添加到环境变量......
  • KAN: Kolmogorov–Arnold Networks 学术论文全译
    KAN:Kolmogorov–ArnoldNetworks学术论文全译来源 https://zhuanlan.zhihu.com/p/696001648 KAN:Kolmogorov–ArnoldNetworks https://arxiv.org/pdf/2404.19756讨论Applicationaspects:WehavepresentedsomepreliminaryevidencesthatKANsaremoreeffective......
  • ThreadLocal入门笔记
    ThreadLocal入门笔记最近学习小傅哥的面经手册,学习到ThreadLocal,这里做个笔记加深印象,也方便日后复习。ThreadLocal是除了加锁这种同步方式之外的一种规避多线程访问出现线程不安全的方法,它的核心思想是:共享变量在每个线程都有一个副本,每个线程操作的都是自己的副本,对另外的线程......
  • 读天才与算法:人脑与AI的数学思维笔记25_涌现理论
    1. 人工智能新闻1.1. 人工智能新闻报道算法的核心是如何将未经处理的原始数据转换成新闻报道1.2. 很少有记者为美联社决定使用机器来帮助报道这些新闻持反对意见1.2.1. 像“Wordsmith”这样的算法,具有自动化的洞察力、科学的叙事能力,现在正被应用于基于大量数据的分析报道......
  • go channel ->同步
    通道并非用来取代锁,各有不同使用场景。通道解决高级别逻辑层次并发架构,锁则用来保护低级别局部代码安全。●竟态条件:多线程同时读写共享资源(竟态资源)。●临界区:读写竟态资源的代码片段。●互斥锁:同一时刻,只有一个线程能进入临界区。●读写锁:写独占(其他读写均被阻塞),读共享。●信号......
  • golang channel 封装
    对于closed或nil通道,规则如下:无论收发,nil通道都会阻塞。不能关闭nil通道。重复关闭通道,引发panic!向已关闭通道发送数据,引发panic!从已关闭通道接收数据,返回缓冲数据或零值。nil通道是指没有make的变量。鉴于通道关闭后,所有基于此的阻塞都被解除,可用作通知。没......
  • [NOI2009] 二叉查找树 & 笛卡尔树学习笔记
    这个题:二叉搜索树原理认识+区间dp;只要熟练相关算法就一定可以做出来。但我不行。。。我们学习一下笛卡尔树:什么垃圾东西,不学了。发现这个题是l蓝书上一道题jqb。二叉查找树又有一个性质:二叉查找树的中序遍历是其代表的序列从小到大排序的结果。而无论Treap如何旋转,其都......