IOC操作Bean管理XML方式(注入内部 bean 和 级联赋值)
目录
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 和 级联赋值)相关推荐
- IOC操作Bean管理XML方式(注入集合类型属性)
目录 IOC操作Bean管理XML方式(注入集合类型属性) (1)首先进行环境的搭建和准备 (2)创建一个类:用来完成集合类型属性注入 (3)在Spring 配置文件进行配置 (4)编写一个测试类进行 ...
- IOC操作Bean管理XML方式(注入空值和特殊符号)
IOC操作Bean管理XML方式(注入空值和特殊符号) 目录 IOC操作Bean管理XML方式(注入空值和特殊符号) (1)通过null标签注入空值: 标签注入空值 (2)属性值中包含特殊符号: 方法 ...
- IOC操作Bean管理XML方式(有参构造注入属性)
IOC操作Bean管理XML方式 目录 有参构造注入属性 (1)步骤(创建类,定义属性,创建属性对应的有参构造方法): (2)步骤:在Spring 的xml配置文件中进行配置 (3)步骤:进行测试 结 ...
- IOC操作Bean管理XML方式(外部属性文件)
目录 IOC操作Bean管理XML方式(外部属性文件) 前情引入: 实验演示: 1.直接配置数据库信息 (1)配置德鲁伊连接池 (2)引入德鲁伊连接池jar包 (3)创建一个bean6.xml配置文件 ...
- IOC操作Bean管理XML方式(xml自动装配)
目录 IOC操作Bean管理XML方式(xml自动装配) 一.演示自动装配过程 (1)根据 属性名称 装配 步骤一: 步骤二: 步骤三: (2)根据 属性类型 装配 (2.1)根据 类型 自动装配产生 ...
- IOC操作Bean管理XML方式(bean 的生命周期)
目录 IOC操作Bean管理XML方式(bean 的生命周期) 1.bean 的生命周期(在单例模式下的生命周期) (1)通过构造器创建 bean 的实例(执行类中无参构造方法去创建对象) (2)为 ...
- IOC操作Bean管理XML方式(bean的作用域)
目录 IOC操作Bean管理XML方式(bean的作用域) 1.在Spring 里面,设置创建 bean 实例是单实例还是多实例的方式 (1)在Spring 配置文件bean 标签里面有属性(scop ...
- IOC操作Bean管理XML方式(FactoryBean)
目录 IOC操作Bean管理XML方式(FactoryBean) Spring 有两种类型的bean 第一种:是普通的 bean 第二种:工厂bean FactoryBean 第一步:创建类,让这个类 ...
- Spring——Bean管理-xml方式进行属性注入
目录 一.xml方式创建对象 二.xml方式注入属性 第①种方式注入:set方法注入 第②种方式注入:有参构造函数注入 constructor-arg:通过构造函数注入 用name标签属性: 不按照顺 ...
最新文章
- vue vue-router vuex element-ui axios 的学习笔记(七)完善登录注册
- Linux复习资料(一)、VM虚拟机安装教程
- 【阿里架构设计思想】一线互联网系统的核心架构是什么样子的?淘宝系统架构演进之路
- 排序算法 - 面试中的排序算法总结
- LVDS DP等显示器接口简介
- 软考网络管理员学习笔记2之第二章数据通信基础
- unity3d android debug log,调试 – 如何在连接到设备时看到MonoDevelop Unity中的Debug.Log输出?...
- 利用根轨迹法进行控制系统的分析和设计
- 浏览器桌面通知(notifications)
- gin 打linux环境包问题解决
- Use YSlow to know why your web Slow
- 安卓项目连接后台服务器,android云后端服务器
- 文件转换base64流
- 服务器虚拟化有什么好处
- 从开发平台到智能供应链,AI技术如何推动企业智能化升级?
- 金庸群侠X版 会议纪要
- 城市交通大脑的内涵与顶层设计
- linux surface pro 4 driver,重置出错?微软Win10平板Surface Pro 4重装系统教程详解
- TrueCrypt所支持的3种加密算法AES、Twofish、Serpent的简单介绍
- 如何在 iOS 5 中使用 Block
热门文章
- loading 遮罩demo
- linux yum下载RPM包后再安装LAMP环境
- nginx php-fpm 下的php.ini在哪里
- ANSI/UTF-8/UCS2(UTF-16),以及回车换行
- 语音合成与识别技术在C#中的应用 (转 )
- linux标准I/O——按行输入和输出
- MATLAB图像处理基础
- python封装exe 时间time问题_python模块之datetime
- 工业机器人 答案 韩建海_不可或缺:协作机器人对于制造业转型升级的意义
- 为什么在python中整数的值没有限制_python-为什么math.log接受大整数值?