《JavaEE框架技術(shù)》課件05Spring框架基礎(chǔ)-控制反轉(zhuǎn)_第1頁
《JavaEE框架技術(shù)》課件05Spring框架基礎(chǔ)-控制反轉(zhuǎn)_第2頁
《JavaEE框架技術(shù)》課件05Spring框架基礎(chǔ)-控制反轉(zhuǎn)_第3頁
《JavaEE框架技術(shù)》課件05Spring框架基礎(chǔ)-控制反轉(zhuǎn)_第4頁
《JavaEE框架技術(shù)》課件05Spring框架基礎(chǔ)-控制反轉(zhuǎn)_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1第6章Spring框架基礎(chǔ)

之控制反轉(zhuǎn)框架程序設(shè)計(jì)(Java)26.0學(xué)習(xí)目標(biāo)理解控制反轉(zhuǎn)1多種依賴注入方式2各種類型的屬性注入3軟件工程系本科課件框架程序設(shè)計(jì)java36.1理解控制反轉(zhuǎn)控制反轉(zhuǎn)(IoC:InversionofControl)是輕量級(jí)Spring框架的核心也可以稱為依賴注入(DI:DependencyInjection)控制反轉(zhuǎn)和依賴注入只是從不同的角度描述同一件事情,兩者都是通過Spring容器來實(shí)現(xiàn)的控制反轉(zhuǎn)可以理解為創(chuàng)建對(duì)象的過程交給了Spring容器,而不是我們通過new的方式來創(chuàng)建,控制權(quán)反轉(zhuǎn)依賴注入解除了兩個(gè)對(duì)象間的強(qiáng)依賴關(guān)系,我們可以將一個(gè)對(duì)象注入到另外一個(gè)對(duì)象軟件工程系本科課件框架程序設(shè)計(jì)java46.1理解控制反轉(zhuǎn)控制反轉(zhuǎn)的運(yùn)行機(jī)理【理解】上節(jié)課我們從Spring容器中獲取bean之前,首先要初始化我們?nèi)萜鞯纳舷挛腁pplicationContext,如下:ApplicationContextcontext=newClassPathXmlApplicationContext("applicationContext.xml");軟件工程系本科課件框架程序設(shè)計(jì)java56.1理解控制反轉(zhuǎn)控制反轉(zhuǎn)的運(yùn)行機(jī)理【理解】applicationContext.xml內(nèi)容,如下:<beans><beanid="userService"class="service.UserService"> <propertyname="name"> <value>張三</value> </property></bean></beans>軟件工程系本科課件框架程序設(shè)計(jì)java66.1理解控制反轉(zhuǎn)在初始化容器上下文的過程中,發(fā)生了如下邏輯:1、Spring加載配置文件applicationContext.xml2、當(dāng)讀取到配置文件中的bean標(biāo)簽時(shí),會(huì)根據(jù)指定的class通過反射的方式創(chuàng)建對(duì)象保存到內(nèi)存中,如下

Classbean=Class.forName(“全類名”);

Objectobj=bean.newInstance();3、當(dāng)讀取到bean標(biāo)簽中的property屬性時(shí),通過反射的方式調(diào)用指定name屬性的set方法,將value值注入進(jìn)去,如下:

Methodmethod=bean.getMethod(attributename,

String.class); method.invoke(obj,value);軟件工程系本科課件框架程序設(shè)計(jì)java76.2多種依賴注入方式三種依賴注入方式

接口注入【不常用】setter注入

通過反射調(diào)用屬性的set方法注入到bean中構(gòu)造方法注入

通過反射調(diào)用bean類的構(gòu)造方法完成注入軟件工程系本科課件框架程序設(shè)計(jì)java86.2多種依賴注入方式例1:在JavaProject中的domain包下,有一個(gè)雇員類(Employee),如下:publicclassEmployee{ privateStringname; privateintage; privateStringsex;

//省略get/set方法}要求:將該類配置到Spring容器中,并初始化三個(gè)屬性(name:張三,age:25,sex:男)軟件工程系本科課件框架程序設(shè)計(jì)java96.2多種依賴注入方式-setter注入setter注入配置如下:<beanid="employee"class="domain.Employee"> <property

name="name"value="張三"></property> <propertyname="age"value="25"></property> <propertyname="sex"value="男"></property></bean>說明:1、property標(biāo)簽的含義是name指定的屬性通過setter方法注入,name指定被注入的屬性名稱,value為注入的具體的值2、property標(biāo)簽中值的注入也可以用如下形式:<propertyname="name">

<value>張三</value> </property>軟件工程系本科課件框架程序設(shè)計(jì)java106.2多種依賴注入方式-構(gòu)造方法注入構(gòu)造方法注入配置如下:1、首先在Employee中定義一個(gè)構(gòu)造方法,如下:publicclassEmployee{ privateStringname; privateintage; privateStringsex;

publicEmployee(Stringname,intage,Stringsex){ =name; this.age=age; this.sex=sex; }}軟件工程系本科課件框架程序設(shè)計(jì)java116.2多種依賴注入方式-構(gòu)造方法注入構(gòu)造方法注入配置如下:2、修改bean的配置如下,如下:<beanid="employee"class="domain.Employee"> <constructor-argindex="0"value="張三"></constructor-arg> <constructor-argindex="1"value="25"></constructor-arg> <constructor-argindex="2"value="男"></constructor-arg></bean>說明:1、constructor-arg標(biāo)簽的含義是指通過構(gòu)造方法中的參數(shù)注入值,index指構(gòu)造方法中參數(shù)的序號(hào),value指注入的值。2、constructor-arg標(biāo)簽中值的注入也可以使用如下形式:<constructor-argindex="0">

<value>張三</value> </constructor-arg>軟件工程系本科課件框架程序設(shè)計(jì)java126.3各種類型的屬性注入我們以前演示的屬性注入,所有屬性都是基本數(shù)據(jù)類型的,屬性的注入如下所示:<propertyname="name">

<value>張三</value> </property>在大多數(shù)情況下,屬性的類型也有可能是實(shí)體類或者是一個(gè)集合,那么實(shí)體類屬性或者集合屬性如何注入呢?軟件工程系本科課件框架程序設(shè)計(jì)java136.3各種類型的屬性注入-實(shí)體類屬性例2:以前在講mybatis多對(duì)一查詢的時(shí)候,一個(gè)雇員類中包含了一部門類的引用部門類如下所示:publicclassDepartment{ privateStringdeptid; privateStringdeptname;

//省略get/set方法}軟件工程系本科課件框架程序設(shè)計(jì)java146.3各種類型的屬性注入-實(shí)體類屬性雇員類如下所示:publicclassEmployee{ privateStringname; privateintage; privateStringsex; privateDepartmentdept;//所屬部門

//省略get/set方法}要求:1、將Employee類配置到Spring容器中,并初始化三個(gè)屬性(name:張三,age:25,sex:男)2、初始化該雇員的部門(deptid:001,deptname:開發(fā)部)軟件工程系本科課件框架程序設(shè)計(jì)java156.3各種類型的屬性注入-實(shí)體類屬性第1個(gè)題目是基本數(shù)據(jù)類型值的注入,省略第2個(gè)題目是將一個(gè)部門對(duì)象注入到雇員對(duì)象的部門屬性中1、首先在spring中配置一個(gè)部門對(duì)象bean,如下所示:<beanid="dept"class="domain.Department"><propertyname="deptid"value="001"></property><propertyname="deptname"value="開發(fā)部"></property></bean>軟件工程系本科課件框架程序設(shè)計(jì)java166.3各種類型的屬性注入-實(shí)體類屬性2、然后在spring中配置一個(gè)雇員對(duì)象bean,如下所示:<beanid="employee2"class="domain.Employee"> <propertyname="name"value="張三"></property> <propertyname="age"value="25"></property> <propertyname="sex"value="男"></property> <propertyname="dept"ref="dept"></property></bean>說明:1、將一個(gè)bean注入到另外一個(gè)bean的屬性中使用ref屬性軟件工程系本科課件框架程序設(shè)計(jì)java176.3各種類型的屬性注入-實(shí)體類屬性例3:以前在講mybatis一對(duì)多查詢的時(shí)候,一個(gè)部門類包含一個(gè)雇員的集合部門類如下所示:publicclassDepartment{ privateStringdeptid; privateStringdeptname;

privateList<Employee>employees;

//省略get/set方法}軟件工程系本科課件框架程序設(shè)計(jì)java186.3各種類型的屬性注入-實(shí)體類屬性雇員類如下所示:publicclassEmployee{ privateStringname; privateintage; privateStringsex;

//省略get/set方法}要求:1、將Department類配置到Spring容器中,并初始化兩個(gè)屬性(deptid:001,deptname:開發(fā)部)2、初始化該部門employees屬性,向集合中加入兩個(gè)雇員(張三:25:男,李四:24:女)軟件工程系本科課件框架程序設(shè)計(jì)java196.3各種類型的屬性注入-集合屬性第1個(gè)題目是基本數(shù)據(jù)類型值的注入,省略第2個(gè)題目是將兩個(gè)雇員對(duì)象注入到部門對(duì)象的集合屬性中1、首先在spring中配置兩個(gè)雇員對(duì)象bean,如下所示:<beanid="employee1"class="domain.Employee"> <propertyname="name"value="張三"></property> <propertyname="age"value="25"></property> <propertyname="sex"value="男"></property></bean><beanid="employee2"class="domain.Employee"> <propertyname="name"value="李四"></property> <propertyname="age"value="24></property> <propertyname="sex"value="女"></property></bean>軟件工程系本科課件框架程序設(shè)計(jì)java206.3各種類型的屬性注入-集合屬性2、然后在spring中配置一個(gè)部門對(duì)象bean,如下所示:<beanid="dept"class="domain.Department"> <propertyname="deptid"value="001"></property> <propertyname="deptname"value="開發(fā)部"></property> <propertyname="employees">

<list> <refbean="employee1"/> <refbean="employee2"/> </list> </propert

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論