欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring基础---IoC使用拓展

程序员文章站 2022-03-19 14:57:04
...
<!-- 配置纸张 -->
    <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

Spring基础---IoC使用拓展

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>
相关标签: ioc

上一篇: MAC安装Python

下一篇: house price