版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年標(biāo)膠項(xiàng)目立項(xiàng)申請報(bào)告范文
- 《種養(yǎng)結(jié)合下的天津奶牛養(yǎng)殖業(yè)綜合效益研究》
- 《管理決策中的個(gè)體認(rèn)知偏差研究》
- 2024年新型結(jié)構(gòu)不銹鋼絲繩項(xiàng)目申請報(bào)告
- 2024-2030年中國甲基丙烯酸甲酯(MMA)膠粘劑行業(yè)供需預(yù)測及投資風(fēng)險(xiǎn)研究報(bào)告
- 2024年水用電磁閥項(xiàng)目申請報(bào)告模板
- 2024-2030年中國球微電聲元器件行業(yè)發(fā)展現(xiàn)狀及投資競爭力分析報(bào)告
- 2024-2030年中國玻璃管轉(zhuǎn)子流量計(jì)行業(yè)發(fā)展?fàn)顩r規(guī)劃分析報(bào)告
- 2024-2030年中國環(huán)境衛(wèi)生管理行業(yè)競爭格局及投資模式分析報(bào)告
- 2024-2030年中國燃?xì)獍l(fā)電行業(yè)發(fā)展前景預(yù)測規(guī)劃分析報(bào)告
- GB/T 13077-2024鋁合金無縫氣瓶定期檢驗(yàn)與評定
- 有限空間作業(yè)安全承諾書
- 幼兒園預(yù)防近視教師培訓(xùn)
- SY-T 6966-2023 輸油氣管道工程安全儀表系統(tǒng)設(shè)計(jì)規(guī)范
- 人工智能訓(xùn)練師(中級數(shù)據(jù)標(biāo)注員)理論考試題庫大全(含答案)
- 醫(yī)院科室合作共建方案
- 3.1DNA是主要的遺傳物質(zhì)課件-高一下學(xué)期生物人教版必修二
- 小學(xué)數(shù)學(xué)計(jì)算專項(xiàng)訓(xùn)練之乘法分配律(提公因數(shù))
- 《食物在體內(nèi)的旅行》說課稿
- 手機(jī)綜合癥小品臺(tái)詞
- 校園封閉安全管理制度培訓(xùn)
評論
0/150
提交評論