前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >为啥依赖注入只在Java盛行?

为啥依赖注入只在Java盛行?

作者头像
JavaEdge
发布2024-05-25 14:35:17
320
发布2024-05-25 14:35:17
举报
文章被收录于专栏:JavaEdgeJavaEdge

第一时间关注技术干货!

免责声明~ 任何文章不要过度深思! 万事万物都经不起审视,因为世上没有同样的成长环境,也没有同样的认知水平,更「没有适用于所有人的解决方案」; 不要急着评判文章列出的观点,只需代入其中,适度审视一番自己即可,能「跳脱出来从外人的角度看看现在的自己处在什么样的阶段」才不为俗人。 怎么想、怎么做,全在乎自己「不断实践中寻找适合自己的大道」

1 使用Java的人实在太多

而使用Java的人中绝大多数又使用的Spring,所有学校和培训机构教Java就要教Spring。而 Spring就是依赖注入的集大成者,你只要用Spring就必须使用依赖注入。

2 其他语言没有Spring

类似的具有统治地位的依赖注入框架。Golang或者Cpp里面没有Spring那种IOC容器大杀器。Spring这种框架能够很好的发展,主要来源于Java本身运行期强大的动态能力,特别是反射能力,这是其他静态语言,特别是可以直接编译成native code的语言所不具备的。Cpp也可以做运行期的注入,但是你要把大量的类相关的元数据储存在别的地方,在运行期调用。

但事实上,依赖注入这个概念是很朴素的,我们只要不在类中直接引用其他类,而是在更高的层次去依次创建类并且通过构造函数之类的方法注入相关依赖就可以实现类之间的解耦。这种组织代码的方式,不管是在任何语言当中都能起到很好的作用。只是没有IOC容器的框架,需要手动管理依赖还是很繁琐的。

所有成规模的,需求经常变动或者你要有效进行单元测试的代码,依赖注入都可以极大的缓解代码耦合的状况。其实很多时候我们都用了这些技巧,只是没有意识到罢了。依赖注入的本质就是将手动管理依赖交由专有的组件去管理。

所以,流行的不是依赖注入,而是框架。

另外,大量程序员在Spring的熏陶下已经先入为主;但凡提供依赖注入,就首先想到了Java,想到Spring。其他语言由于自身语法特性,即是实现了依赖注入,也可能和Spring的实现方式 和 使用方式 完全不一样,大家都可能觉得不够地道,以至于 不会用

比如,实现了一个golang的依赖注入框架:Gone(的“标签” 尝试 代替 Java中的“注解”,然而很多功能实现起来是有难度的,不能不换一种方式实现,但是对于使用者来说就是门槛。另外,golang中还有尝试使用 泛型 实现依赖注入的 kod 框架,教学成本就更高了。

依赖注入,本来只是一种设计模式,没有使用的必要性,没有也可能很愉快的编程,没有就没有了呗,很多人是这么想的。但是我还是推荐大家使用

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-05-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 使用Java的人实在太多
  • 2 其他语言没有Spring
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档