首页 > 编程语言 > 详细

spring 5 spring中的依赖注入

时间:2020-01-15 17:49:44      阅读:90      评论:0      收藏:0      [点我收藏+]

1.依赖注入:Dependency Injection(DI)

IOC的作用:降低程序间的耦合(依赖关系)


2.依赖关系管理
    以后都交给spring来维护
在当前类需要用到其他类的对象,由spring为我们提供,我们只需在配置文件中声明


3.依赖关系的维护:称之为依赖注入
    依赖注入
        能注入数据分为三类:
            --基本类型和String
            --其他bean类型(在配置文件中或注解中配置过的bean)
            --复杂类型/集合类型
        注入方式由三种:
            第一种:使用构造函数提供
            第二种:使用set方法提供
            第三种:使用注解提供

3.1:构造函数注入

使用标签:constructor-arg
    标签出现的位置:bean标签的内部
    标签中的属性:
        type:用于在指定要注入的数据的数据类型,该数据类型也是构造函数中的某个或某些参数的类型
        index:用于指定要注入的数据给构造函数中指定索引位置的参数赋值,索引位置从0开始
        name:用于指定给构造函数中指定名称的参数赋值         (常用)
        ===========用于指定给构造函数中哪个函数赋值===========
        value:用于提供基本类型和String类型的数据
        ref:用于指定其他的bean类型数据。它指的就是spring的IOC核心容器中出现过的bean对象

特点优势:
    在获取bean对象时,注入数据是必须的操作,否则对象无法创建成功
弊端:
    改变了bean对象的实例化方式,使我们在创建对象时,如果用不到这些数据,也必须提供
<bean id="accountService" class="com.itheima.service.impl.AccountServiceImpl">
    <constructor-arg name="name" value="test"></constructor-arg>
    <constructor-arg name="age" value="18"></constructor-arg>
    <constructor-arg name="birthday" ref="now"></constructor-arg>
</bean>

<!--额外的配置一个日期对象
now
通过反射"java.util.Date"创建一个对象now
-->
<bean id="now" class="java.util.Date"></bean>

 

3.2:set函数注入

涉及标签:property
出现位置:bean标签内部
标签的属性:
     name:用于指定给注入时所调用的set方法名称
     value:用于提供基本类型和String类型的数据
     ref:用于指定其他的bean类型数据。它指的就是spring的IOC核心容器中出现过的bean对象

 优势:创建对象时没有明确的限制,可以直接使用默认构造函数
 弊端:如果有某个成员必须有值,获取对象时则set方法无法保证一定注入,可能没有执行
<bean id="accountService2" class="com.itheima.service.impl.AccountServiceImpl2">
    <property name="name" value="TEST"></property>
    <property name="age" value="21"></property>
    <property name="birthday" value="now"></property>
</bean>
 

3.3:复杂类型/集合类型注入

用于给List结构集合注入的标签:list array set
用于给Map结构集合注入的标签:map props
结构相同,标签可以互换

<bean id="accountService3" class="com.itheima.service.impl.AccountServiceImpl3">
    <property name="myStrs">
        <array>
            <value>A</value>
            <value>B</value>
            <value>C</value>
        </array>
    </property>

    <property name="myList">
        <list>
            <value>A</value>
            <value>B</value>
            <value>C</value>
        </list>
    </property>

    <property name="mySet">
        <set>
            <value>A</value>
            <value>B</value>
            <value>C</value>
        </set>
    </property>

    <property name="myMap">
        <map>
            <entry key="testA" value="aaa"></entry>
            <entry key="testB">
                <value>BBB</value>
            </entry>
        </map>
    </property>

    <property name="myProps">
        <props>
            <prop key="testC">ccc</prop>
            <prop key="testD">ddd</prop>
        </props>
    </property>

</bean>

spring 5 spring中的依赖注入

原文:https://www.cnblogs.com/ykk123/p/12197803.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!