spring属性的注入为什么不支持接口注入

最近在学习的时候突然想到这个问题,那么为什么spring就不支持接口注入呢?

首先,我们来看下属性的注入方式有三种:
1. set方法(重点)

    public class User{
    private String name;
    public void setName(String name){
        this.name=name;
        }
    }

    User user=new User();
    user.setName("shenxuebing");

2.有参数的构造(不常用)

    public class User{
    private String name;
    public void setName(String name){
        this.name=name;
        }
    }

    User user=new User("shenxuebing");

3.使用接口注入(spring不支持)

    public interface Dao{
    public void add(Stirng name);
    }

    public class DaoImpl implements Dao{
    private Stirng name;
    public void add(String name){
        this.name=name;
        }

    }

其次,在软件设计有个规则,相信每个程序猿都听过,那就是“高内聚,低耦合”。什么意思呢?请见我的另一篇文章《高内聚低耦合》。简单来说要想实现接口注入,那就得实现这个接口的方法,这样就造成了耦合度高,不利于程序的拓展性。这不是最好的初衷。

最后,我们抛开耦合度高来看下接口注入。在接口注入过程中,我们在实现接口的类中也要定义要赋值的变量,然后实现属性的注入。

private Stirng name;
    public void add(String name){
        this.name=name;
        }

大家想一想这段代码是不是似曾相识,对!,那就是用set方法注入,这不就是换了个名字而已吗?为何要那么费劲的要实现个接口来进行属性注入呢?本身就是set注入,然后又非要加个接口来实现这个功能,这样就多此一举了。而且还造成了耦合度高。这样为了降低耦合度,方便简洁,所以spring不支持接口的属性注入。

欢迎大佬前来指点迷津,小弟有什么说的不对的地方多多指出,小弟不胜感激。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

离水的鱼儿

一分也是爱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值