1、字面量

(1)null 值

  1. <!--null 值-->
  2. <property name="address">
  3. <null/>
  4. </property>

(2)属性值包含特殊符号

  1. <!--属性值包含特殊符号
  2. 1 把<>进行转义 &lt; &gt;
  3. 2 把带特殊符号内容写到 CDATA
  4. -->
  5. <property name="address">
  6. <value><![CDATA[<<南京>>]]></value>
  7. </property>

2、注入属性-外部 bean

(1)创建两个类 service 类和 dao 类
(2)在 service 调用 dao 里面的方法
(3)在 spring 配置文件中进行配置

  1. package com.atguigu.service;
  2. import com.atguigu.dao.UserDao;
  3. public class UserService {
  4. //创建 UserDao 类型属性,生成 set 方法
  5. private UserDao userDao;
  6. public void setUserDao(UserDao userDao) {
  7. this.userDao = userDao;
  8. }
  9. public void add() {
  10. System.out.println("service add...............");
  11. userDao.update();
  12. }
  13. }
  1. <!--1 service 和 dao 对象创建-->
  2. <bean id="userService" class="com.atguigu.service.UserService">
  3. <!--注入 userDao 对象
  4. name 属性:类里面属性名称
  5. ref 属性:创建 userDao 对象 bean 标签 id 值
  6. -->
  7. <property name="userDao" ref="userDaoImpl"></property>
  8. </bean>
  9. <bean id="userDaoImpl" class="com.atguigu.dao.UserDaoImpl"></bean><!--class的路径不能是接口,因为没法new-->
  1. @Test
  2. public void testAdd(){
  3. //1 加载 spring 配置文件
  4. ApplicationContext context = new ClassPathXmlApplicationContext("bean2.xml");
  5. //2 获取配置创建的对象
  6. UserService userService = context.getBean("userService", UserService.class);
  7. System.out.println(userService);
  8. userService.add();
  9. }

3、注入属性-内部 bean

(1)一对多关系:部门和员工,一个部门有多个员工,一个员工属于一个部门,部门是一,员工是多
(2)在实体类之间表示一对多关系,员工表示所属部门,使用对象类型属性进行表示

  1. package com.atguigu.bean;
  2. //部门类
  3. public class Dept {
  4. private String dname;
  5. public void setDname(String dname) {
  6. this.dname = dname;
  7. }
  8. @Override
  9. public String toString() {
  10. return "Dept{" +
  11. "dname='" + dname + '\'' +
  12. '}';
  13. }
  14. }
  15. package com.atguigu.bean;
  16. //员工类
  17. public class Emp {
  18. private String ename;
  19. private String gender;
  20. //员工属于某一个部门,使用对象形式表示
  21. private Dept dept;
  22. public void setDept(Dept dept) {
  23. this.dept = dept;
  24. }
  25. public void setEname(String ename) {
  26. this.ename = ename;
  27. }
  28. public void setGender(String gender) {
  29. this.gender = gender;
  30. }
  31. public void add(){
  32. System.out.println(ename+"::"+gender+"::"+dept);
  33. }
  34. }

(3)在 spring 配置文件中进行配置

  1. <!--内部bean-->
  2. <bean id="emp" class="com.atguigu.bean.Emp">
  3. <!--设置两个普通属性-->
  4. <property name="ename" value="lucy"></property>
  5. <property name="gender" value="女"></property>
  6. <!--设置对象类型属性-->
  7. <property name="dept">
  8. <bean id="dept" class="com.atguigu.bean.Dept">
  9. <property name="dname" value="安保部"></property>
  10. </bean>
  11. </property>
  12. </bean>
  1. @Test
  2. public void testBean2(){
  3. //1 加载 spring 配置文件
  4. ApplicationContext context = new ClassPathXmlApplicationContext("bean3.xml");
  5. //2 获取配置创建的对象
  6. Emp emp = context.getBean("emp", Emp.class);
  7. System.out.println(emp);
  8. emp.add();
  9. }

4、注入属性-级联赋值

(1)第一种写法

  1. <!--级联赋值-->
  2. <bean id="emp" class="com.atguigu.bean.Emp">
  3. <!--设置两个普通属性-->
  4. <property name="ename" value="lucy"></property>
  5. <property name="gender" value="女"></property>
  6. <!--级联赋值-->
  7. <property name="dept" ref="dept"></property>
  8. </bean>
  9. <bean id="dept" class="com.atguigu.bean.Dept">
  10. <property name="dname" value="财务部"></property>
  11. </bean>

(2)第二种写法

  1. <!--级联赋值-->
  2. <bean id="emp" class="com.atguigu.bean.Emp">
  3. <!--设置两个普通属性-->
  4. <property name="ename" value="lucy"></property>
  5. <property name="gender" value="女"></property>
  6. <!--级联赋值-->
  7. <property name="dept" ref="dept"></property>
  8. <property name="dept.dname" value="技术部"></property><!--Emp中要写dept的get方法,不然会报错-->
  9. </bean>
  10. <bean id="dept" class="com.atguigu.bean.Dept">
  11. <property name="dname" value="财务部"></property>
  12. </bean>
  1. @Test
  2. public void testBean2(){
  3. //1 加载 spring 配置文件
  4. ApplicationContext context = new ClassPathXmlApplicationContext("bean4.xml");
  5. //2 获取配置创建的对象
  6. Emp emp = context.getBean("emp", Emp.class);
  7. System.out.println(emp);
  8. emp.add();
  9. }
  10. 输出结果是:
  11. com.atguigu.bean.Emp@8e24743
  12. lucy::女::Dept{dname='技术部'}