Spring中的依赖注入为什么能够降低类之间的耦合?

在MVC设计模式中,我们都知道controller层依赖service层,service层依赖dao层,我一直很好奇为什么不直接在service中new出一个dao实现类的实例,于是带着这个问题,我去网上找了一下答案,很多的答案都是各种官方的话语,而且复制粘贴的现象很严重,大多数都只是说如果要修改new出来的实现类的时候,会导致整个项目的更改变得麻烦,对于这样的解释,我还是不明白时什么意思。
知道我在百度知道上看到了一个例子能够很好的说明这一点:

首先我们定义一个Dao接口,假设接口中有一个selectXXX的获取数据库中数据的方法

interface xxxDao{
	public int selectXXX(String id);
}

然后我们定义这个Dao接口的实现类:

class xxxDaoImpl{
    @Override
    public int selectXXX(String id){
         return "取数据的方法一";
     }
}

定义一个Test类来执行,我们通过new出一个dao的实现类对象出来:

public class Test{
    public static void main(String[] args){
        xxxDao dao = new xxxDaoImpl();
        dao.selectXXX(1);
    }
}

这样看起来没什么毛病。
但是如果有一个我想改变dao实现类的实现方式,新造出一个xxxDaoImpl2这个类出来,那么我们需要去每一个new出xxxDaoImpl的源文件中去修改这条语句,这样就很麻烦了。
但是如果我们用的时依赖注入的方式,我们只提供一个dao接口的引用,然后在程序运行时动态地将dao的实现对象注入到依赖它的类中,我们就解决了这个问题。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值