目录

1.注入属性-内部 bean

(1)一对多关系:部门和员工

(2)在实体类之间表示一对多关系

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

2.注入属性-级联赋值

(1)第一种写法类似外部bean注入

(2)第二种写法:

因为是先创建对象,get拿到对象再赋值了,这才是级联赋值


1.注入属性-内部 bean

前提引入:数据库表与表之间有着不同的关系【一对多,一对一,多对多】

(1)一对多关系:部门和员工

一个部门可以有多个员工,一个员工属于一个部门

(2)在实体类之间表示一对多关系

步骤:首先新建一个bean包,专门做以上操作

在bean包中,我们创建两个类

一个是Department 部门类,代码如下:

package com.lbj.spring5.bean;/*** 部门类*/
public class Department {private String dname;public void setDname(String dname) {this.dname = dname;}@Overridepublic String toString() {return "Department{" +"dname='" + dname + '\'' +'}';}
}

一个是Employee 员工类,代码如下:

package com.lbj.spring5.bean;/*** 员工类*/
public class Employee {private String ename;private String gender;public void setEname(String ename) {this.ename = ename;}public void setGender(String gender) {this.gender = gender;}//简单写一个测试方法public void add(){System.out.println(ename+"::"+gender+"::"+department);}
}

目前两个类并没有关系,需要表示他们之间的关系

现在,一个部门里面有多个员工,问题是:我们如何表示"多个"?

办法:用一个集合表示

操作:员工表示所属部门,使用对象类型属性进行表示

代码如下:

package com.lbj.spring5.bean;/*** 员工类*/
public class Employee {private String ename;private String gender;//员工属于某一个部门,使用对象形式表示private Department department;public void setDepartment(Department department) {this.department = department;}public void setEname(String ename) {this.ename = ename;}public void setGender(String gender) {this.gender = gender;}//简单写一个测试方法public void add(){System.out.println(ename+"::"+gender+"::"+department);}
}

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

为了便于区分,我们再次创建一个新的xml文件,bean3.xml

在bean3.xml中完成Department和Employee的操作

而且,因为上面的员工类和部门类 存在内部类的关系,接下来我们就在xml文件中实现 注入内部 bean

方法:在一个bean里面可以嵌套再定义另外一个对象

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><!--内部bean--><bean id="employeee" class="com.lbj.spring5.bean.Employee"><!--设置两个普通的属性--><property name="ename" value="杰克"></property><property name="gender" value="男"></property><!--设置对象的类型属性,使用的是内部嵌套的方法--><property name="department"><bean id="department" class="com.lbj.spring5.bean.Department"><property name="dname" value="后台部门"></property></bean></property></bean></beans>

在TestBean测试类中进行测试:

package com.lbj.spring5.testdemo;import com.lbj.spring5.bean.Employee;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestBean {@Testpublic void testBean3(){//1.加载spring配置文件ApplicationContext context=new ClassPathXmlApplicationContext("bean3.xml");//2.获取配置创建的对象,通过context得到对象Employee employee=context.getBean("employeee", Employee.class);//4.通过employee调用add()方法employee.add();}
}

测试结果:

2.注入属性-级联赋值

(1)第一种写法类似外部bean注入

其实第一步我们做的内部嵌套,注入内部 bean 就是一种 级联赋值

为了方便起见,我们再次新建一个新的bean4.xml配置文件来进行 级联赋值 操作【类似外部bean注入】

代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><!--注入属性-级联赋值--><bean id="employeee" class="com.lbj.spring5.bean.Employee"><!--设置两个普通的属性--><property name="ename" value="杰克"></property><property name="gender" value="男"></property><!--前两个属性没变化,第三个属性有变化--><property name="department" ref="department"></property></bean><bean id="department" class="com.lbj.spring5.bean.Department"><property name="dname" value="后台部门"></property></bean>
</beans>

测试效果:

(2)第二种写法:

员工类中有三个属性,ename和gender都属于字符串类型的属性

然而department是一个对象,这个对象的属性名字是dname

department.dname表示向department对象中设置dname属性的值

写完后我们发现,红色框框内是报错的

为什么会报错呢?

因为现在要向Employee类的department对象中设置值,那么这个department对象是不是要先得到才可以去用

解决:需要生成department的get方法

报错消失:

测试结果:

因为是先创建对象,get拿到对象再赋值了,这才是级联赋值

IOC操作Bean管理XML方式(注入内部 bean 和 级联赋值)相关推荐

  1. IOC操作Bean管理XML方式(注入集合类型属性)

    目录 IOC操作Bean管理XML方式(注入集合类型属性) (1)首先进行环境的搭建和准备 (2)创建一个类:用来完成集合类型属性注入 (3)在Spring 配置文件进行配置 (4)编写一个测试类进行 ...

  2. IOC操作Bean管理XML方式(注入空值和特殊符号)

    IOC操作Bean管理XML方式(注入空值和特殊符号) 目录 IOC操作Bean管理XML方式(注入空值和特殊符号) (1)通过null标签注入空值: 标签注入空值 (2)属性值中包含特殊符号: 方法 ...

  3. IOC操作Bean管理XML方式(有参构造注入属性)

    IOC操作Bean管理XML方式 目录 有参构造注入属性 (1)步骤(创建类,定义属性,创建属性对应的有参构造方法): (2)步骤:在Spring 的xml配置文件中进行配置 (3)步骤:进行测试 结 ...

  4. IOC操作Bean管理XML方式(外部属性文件)

    目录 IOC操作Bean管理XML方式(外部属性文件) 前情引入: 实验演示: 1.直接配置数据库信息 (1)配置德鲁伊连接池 (2)引入德鲁伊连接池jar包 (3)创建一个bean6.xml配置文件 ...

  5. IOC操作Bean管理XML方式(xml自动装配)

    目录 IOC操作Bean管理XML方式(xml自动装配) 一.演示自动装配过程 (1)根据 属性名称 装配 步骤一: 步骤二: 步骤三: (2)根据 属性类型 装配 (2.1)根据 类型 自动装配产生 ...

  6. IOC操作Bean管理XML方式(bean 的生命周期)

    目录 IOC操作Bean管理XML方式(bean 的生命周期) 1.bean 的生命周期(在单例模式下的生命周期) (1)通过构造器创建 bean 的实例(执行类中无参构造方法去创建对象) (2)为 ...

  7. IOC操作Bean管理XML方式(bean的作用域)

    目录 IOC操作Bean管理XML方式(bean的作用域) 1.在Spring 里面,设置创建 bean 实例是单实例还是多实例的方式 (1)在Spring 配置文件bean 标签里面有属性(scop ...

  8. IOC操作Bean管理XML方式(FactoryBean)

    目录 IOC操作Bean管理XML方式(FactoryBean) Spring 有两种类型的bean 第一种:是普通的 bean 第二种:工厂bean FactoryBean 第一步:创建类,让这个类 ...

  9. Spring——Bean管理-xml方式进行属性注入

    目录 一.xml方式创建对象 二.xml方式注入属性 第①种方式注入:set方法注入 第②种方式注入:有参构造函数注入 constructor-arg:通过构造函数注入 用name标签属性: 不按照顺 ...

最新文章

  1. vue vue-router vuex element-ui axios 的学习笔记(七)完善登录注册
  2. Linux复习资料(一)、VM虚拟机安装教程
  3. 【阿里架构设计思想】一线互联网系统的核心架构是什么样子的?淘宝系统架构演进之路
  4. 排序算法 - 面试中的排序算法总结
  5. LVDS DP等显示器接口简介
  6. 软考网络管理员学习笔记2之第二章数据通信基础
  7. unity3d android debug log,调试 – 如何在连接到设备时看到MonoDevelop Unity中的Debug.Log输出?...
  8. 利用根轨迹法进行控制系统的分析和设计
  9. 浏览器桌面通知(notifications)
  10. gin 打linux环境包问题解决
  11. Use YSlow to know why your web Slow
  12. 安卓项目连接后台服务器,android云后端服务器
  13. 文件转换base64流
  14. 服务器虚拟化有什么好处
  15. 从开发平台到智能供应链,AI技术如何推动企业智能化升级?
  16. 金庸群侠X版 会议纪要
  17. 城市交通大脑的内涵与顶层设计
  18. linux surface pro 4 driver,重置出错?微软Win10平板Surface Pro 4重装系统教程详解
  19. TrueCrypt所支持的3种加密算法AES、Twofish、Serpent的简单介绍
  20. 如何在 iOS 5 中使用 Block

热门文章

  1. loading 遮罩demo
  2. linux yum下载RPM包后再安装LAMP环境
  3. nginx php-fpm 下的php.ini在哪里
  4. ANSI/UTF-8/UCS2(UTF-16),以及回车换行
  5. 语音合成与识别技术在C#中的应用 (转 )
  6. linux标准I/O——按行输入和输出
  7. MATLAB图像处理基础
  8. python封装exe 时间time问题_python模块之datetime
  9. 工业机器人 答案 韩建海_不可或缺:协作机器人对于制造业转型升级的意义
  10. 为什么在python中整数的值没有限制_python-为什么math.log接受大整数值?