自学java之Spring的两种依赖注入

依赖注入实现了控制反转的思想。

Spring通过依赖注入的方式来完成Bean管理的。

Bean管理说的是:Bean对象的创建,以及Bean对象中属性的赋值(或者叫做Bean对象之间关系的维护)。

依赖注入:

  • 依赖指的是对象和对象之间的关联关系。

  • 注入指的是一种数据传递行为,通过注入行为来让对象和对象产生关系。

依赖注入常见的实现方式包括两种:

  • 第一种:set注入

  • 第二种:构造注入

3.1 set注入

set注入底层通过反射调用set方法给属性赋值 前提是一定要有set方法 不然直接报错

在bean里面 多一个标签

<property> 这个标签就代表着属性赋值

  • name是 set方法去掉set并且首字母小写

  • ref 是依赖的对象 填的内容是根据容器里的bean id来填的

3.2 构造注入

构造注入原理:通过调用构造方法来执行

以这个bean类来做演示 (该类没有使用set注入 只使用了构造方法)

3.2.1第一种
 <bean id="vipDao" class="com.Constructor.Dao.VipDao"></bean>
<!--   构造注入第一种方式
        这里index参数表示构造方法的第几个参数 根据索引来规定
        ref表示依赖的类 其实也就是构造方法里面的参数-->
    <bean id="vipService" class="com.Constructor.Service.VipService">
        <constructor-arg index="0" ref="vipDao"></constructor-arg>
    </bean>

与set注入不同的是 构造注入引用的标签不再是<property> 而是<constructor>

  • index 指的是构造方法里参数的索引

  • ref 同set注入一样 所依赖的对象 依旧是bean的具体id

3.2.2第二种
<!--    构造注入第二钟方式
         这里name指的是构造方法中具体的参数名
         ref依旧是里面具体传的参数
        -->
    <bean id="vipService2" class="com.Constructor.Service.VipService">
        <constructor-arg name="canshuming" ref="vipDao"></constructor-arg>
    </bean>

第二种怎么说呢 感觉有点点随意 就还是和代码有耦合了

  • name 代表具体的参数名

3.2.3第三种
<!--    第三种注入方式
            直接不指定index和name 直接传一个实参让idea自动匹配
-->
    <bean id="vipService3" class="com.Constructor.Service.VipService">
        <constructor-arg ref="vipDao"></constructor-arg>
    </bean>

第三种方式就很简单粗暴 直接没有name属性或者index属性 直接传参数让idea自行判断

3.3总结

其实无论是set注入还是构造注入 底层都是通过反射来给属性赋值

  • 29
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值