第11章 Spring框架入門_第1頁
第11章 Spring框架入門_第2頁
第11章 Spring框架入門_第3頁
第11章 Spring框架入門_第4頁
第11章 Spring框架入門_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第11章Spring框架入門11.1下載Spring框架11.2Spring框架作用及特點(diǎn)11.3Spring框架核心架構(gòu)11.4Spring應(yīng)用環(huán)境搭建11.5Bean的裝配110.6IoC11.7BeanFactory與ApplicationContext11.1下載Spring框架(1)下載地址:/download發(fā)布包結(jié)構(gòu)說明:aspectj

。包含AspectJ相關(guān)的源代碼(src文件夾)及應(yīng)用AspectJ的單元測試類(test文件夾)。dist。包含Spring源碼文件及發(fā)布的JAR文件。docs。包含Spring框架的API文檔(api文件夾),SpringMVC學(xué)習(xí)教程(MVC-step-by-step文件夾),Spring參考文檔(reference文件夾)以及Spring框架標(biāo)簽庫文檔(taglib文件夾)。lib。包含所有Spring支持的第三方類庫。mock。包含Spring框架的測試類源碼。samples。包含Spring框架的應(yīng)用實(shí)例。11.1下載Spring框架(2)src

。包含Spring框架的源碼。test。包含Spring框架的單元測試類源碼。tiger。包含JDK5.0新特性相關(guān)源代碼(src文件夾)以及使用JDK5.0新特性的單元測試類(test文件夾)。

返回11.2Spring框架作用及特點(diǎn)

Spring框架是一個(gè)輕巧的,易于開發(fā)、測試的輕量級框架,適用于開發(fā)大型的JavaEE應(yīng)用。Spring框架的主要特點(diǎn)如下:輕量級:Spring無論是大小還是系統(tǒng)開銷都算是輕量級的,整個(gè)框架可以被壓縮在幾M的JAR包中,應(yīng)用中處理Spring的開銷也微乎其微。方便解耦:Spring提倡通過控制反轉(zhuǎn)(IoC)技術(shù)實(shí)現(xiàn)松耦合。通過Spring中的IoC容器管理各個(gè)對象之間的依賴關(guān)系,能夠有效避免硬性編碼造成的耦合過于緊密的狀況。面向切面編程(AOP):Spring對面向切面編程提供了良好的支持,通過Spring提供的AOP功能,可以輕松實(shí)現(xiàn)業(yè)務(wù)邏輯與系統(tǒng)服務(wù)(例如日志、事務(wù)等)的分離。這樣一來,使得開發(fā)人員能夠更加專注于業(yè)務(wù)邏輯實(shí)現(xiàn)。方便集成其他框架:Spring框架允許集成其他多種框架共同進(jìn)行開發(fā)設(shè)計(jì),比如Hibernate、Struts、Struts2,iBATIS等框架。返回11.3Spring框架核心架構(gòu)(1) Spring框架主要由7個(gè)模塊組成,這些模塊實(shí)現(xiàn)功能不同,實(shí)際應(yīng)用中可以根據(jù)開發(fā)需要選擇合適的模塊。其架構(gòu)圖如下

11.3Spring框架核心架構(gòu)(2)各模塊功能如下:核心模塊(Core):該模塊是整個(gè)框架的最基本組成部分,它提供了依賴注入的功能及對Bean容器的管理功能。通過依賴注入,使得類與類之間不再由硬性編碼方式發(fā)生關(guān)系,而是通過配置實(shí)現(xiàn)這一過程,降低了各個(gè)類之間耦合的緊密度。Spring框架提供的BeanFactory接口,進(jìn)一步消除了應(yīng)用對工廠的依賴。AOP模塊(AOP):該模塊提供了對AOP的支持,允許我們以面向切面的方式開發(fā)程序。同時(shí)Spring框架提供了AspectJ的整合。上下文模塊(Context):該模塊構(gòu)建于核心模塊之上,提供了對Bean的框架式訪問。該模塊還擴(kuò)展了BeanFactory功能。DAO模塊(DAO):該模塊對JDBC進(jìn)行輕量封裝,用以提供對JDBC操作的支持。使用傳統(tǒng)的SQL語句執(zhí)行JDBC操作,復(fù)雜且極容易發(fā)生錯(cuò)誤。Spring通過對JDBC的輕量封裝,使得操作變得更加簡單化。同時(shí)Spring提供了聲明式的事務(wù)管理,使開發(fā)者不必在煩瑣的事務(wù)方面花費(fèi)過多的精力。11.3Spring框架核心架構(gòu)(3)ORM模塊(ORM):該模塊允許Spring集成各種ORM(Object-RelationMapping)框架來實(shí)現(xiàn)持久層的應(yīng)用。各種ORM框架以插件的形式集成到Spring框架中,并由Spring框架來完成事務(wù)管理及異常處理。Web模塊(Web):該模塊也是構(gòu)建于核心模塊之上的,它提供了對Web各種應(yīng)用的全面支持。Spring的MVC模塊(MVC):該模塊提供了一個(gè)完整的MVC(Model-View-Controller)的解決方案,使用Spring框架的MVC模塊進(jìn)行開發(fā),能夠更好地結(jié)合IoC容器。 實(shí)際應(yīng)用中,并不是所有模塊都會(huì)被用到,可根據(jù)實(shí)際需要選擇適當(dāng)?shù)哪K進(jìn)行使用。返回11.4Spring應(yīng)用環(huán)境搭建(1) 創(chuàng)建一個(gè)使用Spring框架的JavaEEWeb應(yīng)用環(huán)境的具體實(shí)現(xiàn)步驟如下1.創(chuàng)建Web工程。2.在工程中引入Spring所需jar包。3.在工程的web.xml文件中添加Spring監(jiān)聽,添加內(nèi)容如下

<listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class></listener>4.添加并配置Spring的核心配置文件applicationContext.xml

11.4Spring應(yīng)用環(huán)境搭建(2)最終的工程結(jié)構(gòu)如右圖所示

此時(shí)已經(jīng)搭建好了Spring框架的運(yùn)行環(huán)境。在此基礎(chǔ)上,我們就可以開始具體代碼的編寫工作了。返回11.5Bean的裝配

Spring中所有的組件都以Bean的形式存在。要想使用容器管理Bean,必須在配置文件中規(guī)定好各個(gè)Bean的屬性及依賴關(guān)系?;九渲梅绞教砑訉傩院喕渲梅祷?1.5.1Bean的裝配—基本配置方式在配置文件中裝配一個(gè)Bean的最基本格式如下<?xmlversion="1.0"encoding="GBK"?><beansxmlns="/schema/beans" xmlns:xsi="/2001/XMLSchema-instance" xsi:schemaLocation="/schema/beans /schema/beans/spring-beans.xsd">

<beanid="user"class="sunyang.Spring.User"/></beans> 所有bean都是配置在<beans>標(biāo)簽中的,通過<bean>標(biāo)簽來聲明一個(gè)bean,其中id指定了bean的名稱,class指定了bean對應(yīng)的類路徑。返回11.5.2Bean的裝配—添加屬性(1) 通過<property>元素為Bean組件添加屬性,該屬性可以是一個(gè)變量、一個(gè)集合或者對其他Bean的一個(gè)引用。

為bean添加一個(gè)變量屬性。示例如下

<beanid="user"class="sunyang.Spring.User"> <propertyname="name"> <value>SunYang</value> </property> </bean>這里添加的變量名稱為name,變量值為SunYan。11.5.2Bean的裝配—添加屬性(2)為Bean添加List類型屬性和Set類型屬性的格式相同。以添加List類型屬性為例,示例如下

<beanid="user"class="sunyang.Spring.User"> <propertyname="name"> <list> <value>SunYang</value> <value>Spring</value> <value>IoC</value> </list> </property> </bean>

這里為bean添加了一個(gè)list類型的屬性“name”,值為“SunYang”,“Spring”和“IoC”。11.5.2Bean的裝配—添加屬性(3)為Bean添加Map類型屬性,示例如下

<beanid="user"class="sunyang.Spring.User"> <propertyname="name"> <map> <entry> <key><value>name</value></key> <value>John</value> </entry> <entry> <key><value>password</value></key> <value>1234</value> </entry> </map> </property> </bean>為Bean添加Map類型屬性時(shí),必須同時(shí)聲明key和value。11.5.2Bean的裝配—添加屬性(4)引用其他Bean。示例如下

<beanid="man"class="sunyang.Spring.Man"/> <beanid="user"class="sunyang.Spring.User"> <propertyname="man"> <refbean="man"/> </property> </bean>這里在user對應(yīng)的Bean中引用了man對應(yīng)的Bean。返回11.5.3Bean的裝配—簡化配置(1)為bean添加一個(gè)變量屬性的簡化配置為

<beanid="user"class="sunyang.Spring.User"> <propertyname="name"value="Sunyang"/> </bean>為Bean添加Map類型屬性的簡化配置為

<beanid="user"class="sunyang.Spring.User"> <propertyname="name"> <map> <entrykey="name"value=“John"/> <entrykey=“passowrd"value=“1234"/> </map> </property> </bean>11.5.3Bean的裝配—簡化配置(2)引用其他Bean的簡化配置如下

<beanid="man"class="sunyang.Spring.Man"/> <beanid="user"class="sunyang.Spring.User"> <propertyname="man"ref="man"/> </bean>返回11.6IoC Spring框架是一個(gè)輕量級框架,通過IoC容器統(tǒng)一管理各組件之間的依賴關(guān)系,以此來降低組件之間耦合的緊密程度。概念實(shí)現(xiàn)方式返回11.6.1IoC—概念

IoC(InverseofControl)通常被稱為控制反轉(zhuǎn)。它是一種設(shè)計(jì)模式,主要關(guān)注組件的依賴性、配置及組件的生命周期。特點(diǎn):

讓容器去全權(quán)負(fù)責(zé)依賴查詢,受管對象只需暴露JavaBean的Setter方法或者帶參數(shù)的構(gòu)造方法,使容器可以在初始化時(shí)組裝對象的依賴關(guān)系。查找定位操作與應(yīng)用代碼完全無關(guān)。不依賴容器的API不需要特殊的接口返回11.6.2IoC—實(shí)現(xiàn)方式(1)

IoC一個(gè)更直觀的名稱就是依賴注入(DependencyInjection,DI),意思就是由框架或容器將被調(diào)用類注入給調(diào)用對象,以此來解除調(diào)用對象和被調(diào)用類之間的依賴關(guān)系。它的實(shí)現(xiàn)方式有3種:構(gòu)造函數(shù)注入。構(gòu)造函數(shù)注入方式是通過調(diào)用類的構(gòu)造函數(shù),并將被調(diào)用類當(dāng)做參數(shù)傳遞給構(gòu)造函數(shù),以此來實(shí)現(xiàn)注入。例如將對象B注入到類A中,示例如下publicclassA{privateBb;publicA(Bb){

this.b=b;}}11.6.2IoC—實(shí)現(xiàn)方式(2) 在applicationContext.xml中添加bean配置如下 <beanid=“b"class=“com.B"/> <beanid=“a"class=“com.A"> <propertyname=“b"ref=“b"/> </bean>設(shè)置方法注入。通過添加并使用被調(diào)用類的setter方法來完成注入過程。示例如下publicclassA{privateBb;publicvoidsetB(Bb){

this.b=b;}}在applicationContext.xml中添加bean配置與構(gòu)造函數(shù)注入相同。11.6.2IoC—實(shí)現(xiàn)方式(3)接口注入。接口注入方式將被調(diào)用類所有需要注入的方法封裝到接口中,被調(diào)用類實(shí)現(xiàn)該接口中定義的方法,以此來實(shí)現(xiàn)注入。在實(shí)際應(yīng)用中這種注入方式很少被用到,因?yàn)槠鋵?shí)現(xiàn)機(jī)制與設(shè)值方法注入方式相似,但卻需要多定義一個(gè)類來封裝需要注入的方法。在一個(gè)大型應(yīng)用中,使用接口注入方式會(huì)帶來很多額外的開銷,因此這種注入方式不被推薦。返回11.7BeanFactory與 ApplicationContext(1) 在Spring框架中,對IoC容器的訪問則是通過BeanFactory和ApplicationContext這兩個(gè)接口實(shí)現(xiàn)的。BeanFactory

對應(yīng)于com.springframework.beans.factory.Beanfactory,提供了IoC的相關(guān)配置機(jī)制。BeanFactory對Bean組件的常見操作主要包括如下幾個(gè)部分創(chuàng)建Bean。BeanFactory不僅可以產(chǎn)生對象還能夠管理對象,BeanFactory生成對象的方式主要有3種:構(gòu)造函數(shù)創(chuàng)建方式、靜態(tài)工廠創(chuàng)建方式和非靜態(tài)工廠創(chuàng)建方式。11.7BeanFactory與 ApplicationContext(2)初始化JavaBean。容器根據(jù)XML配置文件中Bean組件的配置,實(shí)例化Bean對象,并將目標(biāo)JavaBean注入到指定

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論