【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="<<南京>>"></property>
使用CDATA
<property name="address">
<value><![CDATA[<<南京>>]]></value>
</property>
2.注入外部bean
(1)调用其他类的方法,set方法不可少
(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
一对多关系:部门是一,员工是多
<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方法(对象.属性)
<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集合
<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
<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名称空间
<?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集合注入提取
如果是对象类型,也可以用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>