【Spring】xml方式注入其他类型属性:外部bean、内部bean、数组、list、map

1.字面量:属性的固定值

(1)null值
给Book类中的address属性注入null值,配置文件中写为

        <property name="address">
            <null/>
        </property>

(2)属性值包含特殊符号
使用转义符<>

<!--报错-->
<property name="address" value="<<南京>>"></property>  
<property name="address" value="&lt;&lt;南京>>"></property>

使用CDATA

        <property name="address">
            <value><![CDATA[<<南京>>]]></value>
        </property>

2.注入外部bean

(1)调用其他类的方法,set方法不可少
image

(2)配置文件中,要创建两个对象,ref引用其id值

    <bean id="userService" class="com.pxk.user.UserService">
        <property name="userDao" ref="userDaoImpl"></property>
    </bean>
    
    <bean id="userDaoImpl" class="com.pxk.user.UserDaoImpl"></bean>

3.注入内部bean

一对多关系:部门是一,员工是多
image

    <bean id="emp" class="com.pxk.cation.Emp">
        <property name="ename" value="张三"></property>
        <property name="gender" value="男"></property>
        
        <property name="dept">
            <bean id="dep" class="com.pxk.cation.Dept">
                <property name="dname" value="安保部"></property>
            </bean>
        </property>
        
    </bean>

4.注入属性-级联赋值

(1)使用ref

    <bean id="emp" class="com.pxk.cation.Emp">
        <property name="ename" value="张三"></property>
        <property name="gender" value="男"></property>

        <property name="dept" ref="dept"></property>

    </bean>

    <bean id="dept" class="com.pxk.cation.Dept">
        <property name="dname" value="财务部"></property>
    </bean>

(2)dept.dname
需要有dept属性的get方法(对象.属性)
image

    <bean id="emp" class="com.pxk.cation.Emp">
        <property name="ename" value="张三"></property>
        <property name="gender" value="男"></property>

        <property name="dept.dname" value="技术部"></property>

    </bean>

    <bean id="dept" class="com.pxk.cation.Dept">
        <property name="dname" value="财务部"></property>
    </bean>

5.注入集合类型属性

(1)数组、list、map和set集合
image

<bean id="stu" class="com.pxk.test.Stu">
        <property name="courses">
            <array>
                <value>操作系统</value>
                <value>数据库设计</value>
            </array>
        </property>

        <property name="list">
            <list>
                <value>张三</value>
                <value>李四</value>
            </list>
        </property>

        <property name="maps">
            <map>
                <entry key="001" value="90"></entry>
                <entry key="002" value="88"></entry>
            </map>
        </property>

        <property name="sets">
            <set>
                <value>冰激凌</value>
                <value>雪糕</value>
            </set>
        </property>
    </bean>

(2)集合中的属性值为bean
学生类中有课程list,类型为Course
image

    <bean id="stu" class="com.pxk.collectionType.Stu">
        <property name="courseList">
            <list>
                <ref bean="course1"></ref>
                <ref bean="course2"></ref>
            </list>
        </property>
    </bean>

    <!--多个Course对象-->
    <bean id="course1" class="com.pxk.collectionType.Course">
        <property name="cname" value="计算机组成原理"></property>
    </bean>
    <bean id="course2" class="com.pxk.collectionType.Course">
        <property name="cname" value="操作系统"></property>
    </bean>

6.把集合注入部分提取出来

(1)在bean.xml配置文件中引入util名称空间
image

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:util="http://www.springframework.org/schema/util"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util.xsd">


</beans>

(2)使用util标签完成list集合注入提取
image

如果是对象类型,也可以用ref

<!-- 注入值-->
    <util:list id="bookList">
        <value>红楼梦</value>
        <value>西游记</value>
        <value>水浒传</value>
    </util:list>

<!-- 使用-->
<bean id="book" class="com.pxk.collectionType.Book">
    <property name="list" ref="bookList"></property>
</bean>
posted @ 2023-02-08 20:32  植树chen  阅读(440)  评论(0编辑  收藏  举报