Go 上的 DI 有什么比较好的解决方案

2019-03-04 09:19:00 +08:00
 index90

如题^ 目前看过 dig 和 wire,有人用过吗?有什么坑分享一下。

4897 次点击
所在节点    Go 编程语言
18 条回复
shallyy
2019-03-04 10:13:31 +08:00
GoCD
50infivedays
2019-03-04 10:21:51 +08:00
直接写依赖注入不好吗 di 这个缩写也太模糊了
ptyfork
2019-03-04 10:25:19 +08:00
@50infivedays

还好我回复的慢,差点把 DI 当成 CI 了。
hanabi
2019-03-04 10:30:56 +08:00
facebook 也有个 inject 库
SabaPing
2019-03-04 10:55:10 +08:00
手动构造函数注入不用库
php01
2019-03-04 12:18:11 +08:00
用 go 去用依赖注入?问号脸。。。
Presbyter
2019-03-04 13:35:37 +08:00
选择用 go 就是为了追求更高的性能。所以不用依赖注入。
janxin
2019-03-04 14:12:20 +08:00
dig 是用反射实现的,其实还行

wire 是代码生成的,如果不是很复杂的项目,代码生成不如手工写了
50infivedays
2019-03-04 14:17:19 +08:00
@ptyfork 我也想了一下 要不是提到了 wire 我也以为是 ci 的什么变种
zjsxwc
2019-03-04 16:35:10 +08:00
有没有基于 xml 文件的注入?

wire 的方式看起来不爽啊
jlkm2010
2019-03-04 16:37:26 +08:00
建议换成 Java
fairyto2
2019-03-04 16:44:19 +08:00
还以为在说数据智能╮( ̄▽ ̄"")╭
Cbdy
2019-03-04 16:44:29 +08:00
@Presbyter 依赖注入和性能有什么关系?
rockyou12
2019-03-04 16:47:43 +08:00
依赖注入有啥影响性能的……大部分启动时候扫一下就行了
reus
2019-03-04 17:20:44 +08:00
@php01 官方博客都教你用 wire,有什么问题?
Presbyter
2019-03-04 17:47:07 +08:00
@Cbdy go 的依赖注入( dig )用的反射实现的,反射性能不佳。
当然,你要是能做到只在程序初始加载时做一次注入,那就无所谓了。
sampeng
2019-03-04 22:59:27 +08:00
出门左转是 java … go 需要啥依赖注入…
zjsxwc
2019-03-05 17:29:14 +08:00
如果不用 xml 配置注入的话,用注解注入我也喜欢。

发现这个 facebook 的项目,它通过注解来注入比 wire 那种手动写一堆 NewXXXXX 函数来注入更自然:

https://github.com/facebookgo/inject

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/540700

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX