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 和 级联赋值)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA进阶教学之(一维数组)
- 下一篇: 计算机科学与技术mobi,080901-