Spring基础---IoC使用拓展

<!-- 配置纸张 -->
    <bean id="A4" class="paper.TextPaper">
        <property name="lineCountChar" value="5"></property>
        <property name="lineInPage" value="10"></property>
    </bean>

这种注入称为设值注入,此外还有一些其他的注入方式

一、构造注入

<!-- 构造注入 -->
    <bean id="A1" class="paper.TextPaper">
        <constructor-arg value="4" name="lineCountChar"></constructor-arg>
        <constructor-arg value="10" name="lineInPage" ></constructor-arg>
    </bean>
一个"constructor-arg"元素表示构造方法的一个参数,且使用时不区分顺序. 为了避免构造方法的参数出现混淆,无法区分时,可以通过"constructor-arg"元素的name(对应构造的参数名)属性和type(对应构造的参数类型)属性来进行限定.

二、使用p命名空间实现属性注入

首先,使用前要先添加p命名空间的声明:
xmlns:p="http://www.springframework.org/schema/p"
<!-- 在application头 添加 -->

用于p命名空间注入属性

<bean id="user" class="entity.User" p:username="张三" p:age="23" ></bean>

三、注入不同类型数据类型

1、注入特殊字符的值

<bean id="user4" class="entity.User">
    <property name="name">
        <!‐‐ 两种都可以 ‐‐>
        <!‐‐<value><![CDATA[a>b&&3<4]]></value>‐‐>
        <value>a&gt;b&amp;&amp;3&lt;4</value>
    </property>
</bean>
<!-- 少量可以使用预定义的实体引用 大量的话建议使用 <![CDATA[.....]]> 节-->

2、引用其他Bean组件

<!-- 配置一个狗狗类 -->
<bean id="dog" class="entity.Dog" >
    <property name="id" value="5"></property>
    <property name="name" value="小黑"></property>
</bean>
<!-- 配置主人类 -->
    <bean id="master" class="entity.Master" >
    <property name="id" value="1"></property>
    <property name="pet">
        <!‐‐只在本配置文件中查找"<ref local="dog"/>"-->
        <!‐‐ 可以在本配置文件以及相关的配置文件中找-->
        <ref bean="dog"/>
    </property>
</bean>
Spring中定义的Bean可以互相引用,除了使用ref属性还可以通过<ref>子元素实现
<ref>子元素的bean属性和local属性都可以用来指定要引用的Bean的id.

区别是:local属性只能在同一个配置文件中查找
      而bean属性可以在本配置文件以及相关的配置文件中找

3、使用内部Bean—–>只在该处使用

<!-- 配置主人类 -->
    <bean id="master" class="entity.Master" >
    <property name="id" value="1"></property>
    <property name="pet">
        <bean class="entity.Dog" >
            <property name="id" value="5"></property>
            <property name="name" value="小黑"></property>
        </bean>
    </property>
</bean>

4、注入集合类型属性

新建实体类User

这里写图片描述

1)、注入List集合(数组类型)属性
对于List或数组类型的属性,可以使用”<list>”标签注入

<bean id="user" class="entity.User">
    <property name="strs">
        <list>
            <value>su1</value>
            <value>su2</value>
            <value>su3</value>
        </list>
    </property>
    <property name="list">
        <list>
            <value>aaa</value>
            <value>bbb</value>
            <value>ccc</value>
        </list>
    </property>
</bean>

“<list>”标签中间可以使用<value>、<ref>等标签注入集合元素,甚至是另一个<list>标签

2)、注入Set类型的属性

<bean id="user" class="entity.User">
    <property name="set">
        <set>
            <value>s1</value>
            <value>s2</value>
            <value>s3</value>
        </set>
    </property>
</bean>

set标签中也可以使用 value、ref等标签注入集合元素

3)、注入Map类型的属性

<bean id="user" class="entity.User">
    <property name="map">
        <map>
            <entry key="name" value="abc"></entry>
            <entry key="age" value="22"></entry>
        </map>
    </property>
</bean>

如果Map中的键或值是Bean对象, 可以把上面代码中的 key、value属性换成对应的 key-ref、value-ref属性

4)、注入Properties类型的属性

<bean id="user" class="entity.User">
    <property name="props">
        <props>
            <prop key="p1">pop1</prop>
            <prop key="p2">pop2</prop>
        </props>
    </property>
</bean>

Properties 中的键和值通常都是字符串类型

5)、注入null和空字符串值

<!-- 注入空串 -->
<bean id="user" calss="entity.User">
    <property name="email"><value></value></property>
</bean>

<!-- 注入null值 -->
<bean id="user" calss="entity.User">
    <property name="email"><null/></property>
</bean>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值