Spring-依赖注入

简介

  • 依赖注入:Dependency Injection
    * IOC的作用:降低程序之间的耦合(依赖关系)
    * 依赖关系的管理:以后都交给spring来维护在当前类需要用到其他类的对象时,有spring为我们提供,我们只需要在配置文件中说明
  • 依赖关系的维护就成为依赖注入:
    * 能注入的数据有三类:
    + 基本类型和string
    + 其他Bean类型(在配置文件中配置过的bean)
    + 复杂类型/集合类型
    * 注入的方式有三种:
    + 使用构造函数
    + 使用set方法提供
    + 使用注解提供

构造函数注入-调用构造方法提供属性

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

优势:在获取对象时,注入数据是必须的操作,否则无法创建
劣势:改变了bean对象的实例化方式,是我们在创建对象时,如果用不到这些数据,也必须要提供
<bean id="accountService" class="edu.yjsj.impl.AccountServiceImpl">
        <constructor-arg name="name" value="test"/>
        <constructor-arg name="age" value="18"/>
        <constructor-arg name="birth" ref="nowTime"/>
    </bean>
    <bean id="nowTime" class="java.util.Date"/>

Set方法注入-调用属性的set方法

  • 涉及到的标签:
    * 使用标签:constructor-arg
    * 标签出现的位置,bean标签的内部
    * 标签中的属性
    name;用于指定注入时所调用的set方法的名称
    以上三个给值定构造函数的那个参数赋值
    value;由于提供基本类型和String类型参数的数据
    ref:由于指定其他的bean累类型数据,就是指在spring的ioc核心容器中出现过得bean对象

优势: 创建对象时没有明确的限制可以直接使用默认构造函数
劣势: 当某个成员必须有值得时候,则获取对象时时有可能set方法没有执行
<bean id="accountService2" class="edu.yjsj.impl.AccountServiceImpl2">
        <property name="name" value="test"/>
        <property name="age" value="18"/>
        <property name="birth" ref="nowTime"/>
</bean>

复杂类型注入/集合注入

  • 用于给List集合结构注入的标签:
    list array set
  • 用于给Map集合注入的标签:
    map props
    总结:结构相同的集合类型的标签可以互换没有影响,实际开发中只需要一样记一组就可以了
<bean id="accountService3" class="edu.yjsj.impl.AccountServiceImpl3">
        <property name="myStr">
            <array>
                <value>AAA</value>
                <value>BBB</value>
                <value>CCC</value>
            </array>
        </property>
        <property name="myList">
            <list>
                <value>AAA</value>
                <value>BBB</value>
                <value>CCC</value>
            </list>
        </property>
        <property name="mySet">
            <set>
                <value>AAA</value>
                <value>BBB</value>
                <value>CCC</value>
            </set>
        </property>
        <property name="myMap">
            <map>
                <entry key="A" value="AAA"/>
                <entry key="B" value="AAA"/>
                <entry key="C" value="AAA"/>
            </map>
        </property>
        <property name="myPros">
            <props>
                <prop key="A">AAA</prop>
                <prop key="B">AAA</prop>
                <prop key="C">AAA</prop>
            </props>
        </property>
    </bean>

注解方法依赖注入

详情参考链接: Spring-IOC注解.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值