DI依赖注入

1.依赖注入的概念:作用:给创建好的对象中的全局的属性或者对象进行赋值的操作

2.DI的意义:解除类与类之间高耦合性,给对象中全局对象赋值的操作

3.DI和IOC的关系:是同一个事情

        Spring帮助创建对象的过程叫做IoC,创建对象时给对象中全局对象赋值叫做DI,所以认为IoC和DI是同一个事情.

   

DI注入的方式(三种):

A、使用set方法:在实体类中给属性增加set方法

 <!--【A】使用set方法进行DI注入-->
    <!--
        name:对象的属性名
        value和ref的使用场景
        value: 如果注入的属性类型是基本数据类型(包含String)使用value
        ref:如果注入的属性类型是对象这个时候使用ref
    -->
    <bean id="stu" class="com.bjsxt.spring4.Student">
        <property name="name" value="lisi"></property>
        <property name="sex" value="男"></property>
        <property name="age" value="20"></property>
        <property name="clazz"  ref="cla"></property>
    </bean>

B、使用有参构造器:clazz作为Student类中的属性。clazz本身是一个类。这里可以看做是Student类中的对象

<!--【B】有参构造方式进行注入-->
    <bean id="cla" class="com.bjsxt.spring4.Clazz">
         <constructor-arg name="cname" value="java1班"></constructor-arg>
         <constructor-arg name="clazzno" value="507"></constructor-arg>
    </bean>
    <bean id="stu" class="com.bjsxt.spring4.Student">
        <constructor-arg name="age" value="18"></constructor-arg>
        <constructor-arg name="name" value="zs"></constructor-arg>
        <constructor-arg name="sex" value="男"></constructor-arg>
        <constructor-arg name="clazz"  ref="cla"></constructor-arg>
    </bean>

C、自动注入:主要为对象

 

<!--【C】DI中的自动注入-->
    <!--
      底层走的是set方法
      byName:这个时候就会在当前的xml中寻找【bean的ID名称】和需要注入实体中的【属性名】一致,进行匹配注入
      byType:这个时候就会在当前的xml中寻找【bean标签的类型】和需要注入实体中的【属性的类型】一致,进行匹配注入
     底层走的是构造器
     constructor:这个时候首先会根据[有参构造器的形参名]名称进行查找,如果名称没有一致的,在根据类型[有参构造器的类型]进行查找
      需要注意:*在指定的类中必须提供合适的有参构造器才可以
    -->
    <bean id="stu" class="com.bjsxt.spring4.Student" autowire="constructor"></bean>

DI其他类型值的注入:基本类型和对象类型为以上方式

A、基本类型(String)

B、对象类型

C、数组

D、List

E、set

F、Map

 

 <bean id="user" class="com.bjsxt.spring4.User">
        <--1.数组-->
        <property name="arr">
            <array>
                <value>流沙</value>
                <value>韩非</value>
            </array>
        </property>
        <--2.list集合-->
        <property name="list">
            <list>
                <value>百越</value>
                <value>焰灵姬</value>
            </list>
        </property>
        <--3.set集合-->
        <property name="se">
            <set>
                <value>天行</value>
                <value>卫庄</value>
            </set>
        </property>
        <--4.map集合-->
        <property name="map">
            <map>
                <entry>
                    <key>
                        <value>天行</value>
                    </key>
                    <value>九歌</value>
                </entry>
            </map>
        </property>


    </bean>

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值