关于为什么要用依赖注入的方式使用类

首先我们知道,大部分时候我们使用依赖注入创建的javaBean(其实就是变量),都是全局只创建一个。

欸,这不就是全局变量吗?(其实java中没有真正的全局变量,而是依靠单例模式等方法来模拟全局变量)

那我们是不是就可以先把依赖注入当成全局变量呢?

那么问题就变成了为什么全局变量的方式要比new的方式要好呢?

这就显而易见了,对于很多类,他是只需要被我们调用方法的,或者是只需要被我们读取属性,而不需要去改属性的,那么对于这种类,我们就只需要创建一个实例,就可以避免不必要反复创建和销毁对象,减少资源浪费。

那么这种类是哪些呢?

欸!我们的service层和mapper层不就是没有属性,只有方法吗?我们的配置类不就是只需要读取数据,不需要修改数据吗?我们最常注入的类不也就是他们吗?

所以说对于这种类,定义成全局变量会更好。

那为什么我们不直接用单例模式,而是要用依赖注入呢?

那我们可以设想一个情景。现在你需要重构一个老项目,但是因为整个项目都是使用的单例模式来代替依赖注入。那么当你想知道一个类的执行需要依赖另外的那些类时,你需要到这个类的每一个函数里面去看,到底有没有获取全局变量的实例,这个工作是很烦。

而当你使用的是依赖注入呢?那么你就只需要看看类前面注入的是那些类就行了,工作量大大减轻。

其实硬要解决这个问题也可以,可以在每个需要用到注入的类里面,把要注入的类当成属性,然后把属性赋值成那个全局变量。这样的话我们也可以清楚的看到类之间的依赖关系。

但是这样的话就需要我们实现很多个单例模式,还需要给需要被注入的类初始化,这总是没有依赖注入方便的。而且依赖注入还可以声明声明周期,实际比全局变量更加灵活。

综上所述,依赖注入的方式通常要优于直接new对象,或者全局变量。

作者还是新手,如果有理解的不对的地方,还请大佬指正!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值