第11章Spring_第1頁
第11章Spring_第2頁
第11章Spring_第3頁
第11章Spring_第4頁
第11章Spring_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、South China University of TechnologyChapter 11. Spring 提提 綱綱 Spring 框架介紹框架介紹 Spring核心概念:IOC 和DI 基于IOC的松耦合JavaEE分層設(shè)計(jì) Spring框架體系結(jié)構(gòu)Spring 框架的歷史框架的歷史 Rod Johnson . Expert One-on-One J2EE Design and Development. 2002.11. Rod Johnson . Expert One on one J2EE Development Without EJB. 2004.7. http:/projects

2、.spring.io/spring-framework/ Spring特點(diǎn) IOC (反向控制):Spring提倡使用IOC來實(shí)現(xiàn)松耦合,使用IOC對象是被動接收依賴類而不是主動去找。 AOP (面向切面):Spring對面向切面的編程提供了強(qiáng)大的支持,例如可以將系統(tǒng)的事務(wù),日志從業(yè)務(wù)代碼中分離出來。 輕量級輕量級:非侵入式,框架更小,性能高。 對象容器對象容器:Spring是一個容器,它負(fù)責(zé)管理系統(tǒng)對象的生命周期和配置,例如你可以配置一個bean是產(chǎn)生一個實(shí)例還是每次請求都產(chǎn)生一個實(shí)例,它的容器相對于EJB容器更加簡潔。 可擴(kuò)展層次框架可擴(kuò)展層次框架:Spring實(shí)現(xiàn)了使用簡單的組件來配置組

3、裝一個復(fù)雜的系統(tǒng)。Spring的特點(diǎn)的特點(diǎn)提提 綱綱 Spring 框架介紹 Spring核心概念:核心概念:IOC 和和DI 基于 IOC的松耦合JavaEE分層設(shè)計(jì) Spring框架體系結(jié)構(gòu)對象之間的依賴關(guān)系對象之間的依賴關(guān)系 對象依賴關(guān)系:就是一個對象B的變化會引起外一個對象A的變化,我們就說A對象依賴于B對象(A-B) 傳統(tǒng)的直接調(diào)用new 進(jìn)行對象實(shí)例化的方式導(dǎo)致強(qiáng)依賴關(guān)系,模塊耦合程度高。 不方便測試、獨(dú)立開發(fā)、升級。消除直接依賴消除直接依賴 的方法:的方法: IoC (1) IoC(Inversion of Control,控制反轉(zhuǎn)): 使用框架來控制程序之間的依賴關(guān)系, 控制權(quán)

4、由原來的調(diào)用者轉(zhuǎn)移到了框架。 由框架實(shí)現(xiàn)組合裝配消除直接依賴消除直接依賴 的方法:的方法: IoC (2) 沒有控制反轉(zhuǎn)情況 消除直接依賴消除直接依賴 的方法:的方法: IoC (3) 控制反轉(zhuǎn)情況 消除直接依賴消除直接依賴 的方法:的方法: IoC (4) “控制反轉(zhuǎn)” 符合“好萊塢原則”: “Dont call me, Ill call you.” 控制反轉(zhuǎn)將控制權(quán)倒置,從而使軟件系統(tǒng)發(fā)生了具有可擴(kuò)展性、可復(fù)用性等特性的飛躍 在Spring框架中所實(shí)現(xiàn)的IoC機(jī)制 ,也稱為 “依賴注入”(DI,Dependency Injection) 框架起到對象容器的作用,負(fù)責(zé)搭配不同的對象組件進(jìn)行使

5、用 DI的實(shí)現(xiàn)方式的實(shí)現(xiàn)方式 (1) Spring提供兩種主要的DI實(shí)現(xiàn)方式: Setter(設(shè)值)注入方式 Constructor(構(gòu)造器)注入方式Setter(設(shè)值)注入方式(設(shè)值)注入方式 調(diào)用者:DbHello 被調(diào)用者:DirectoryDAOImpapplicationContext.xml構(gòu)造器注入方式構(gòu)造器注入方式 調(diào)用者:DbHello 被調(diào)用者:DirectoryDAOImp applicationContext.xml提提 綱綱 Spring 框架介紹 Spring核心概念:IOC 和DI 基于基于IOC的松耦合的松耦合JavaEE分層設(shè)計(jì)分層設(shè)計(jì) Spring框架體系結(jié)

6、構(gòu)JAVAEE的分層設(shè)計(jì)的分層設(shè)計(jì) - 四層架構(gòu)四層架構(gòu)松耦合軟件系統(tǒng)的必要性松耦合軟件系統(tǒng)的必要性 不能假定用戶需求是不變的 只有肯定用戶需求變化是永恒的這樣原則,我們設(shè)計(jì)的軟件系統(tǒng)才能滿足用戶不斷變化需求 這就要求我們的軟件系統(tǒng)應(yīng)該具有很好的可擴(kuò)展性和可復(fù)用性 手段: 降低層與層的耦合度即松耦合緊耦合的設(shè)計(jì)情況?緊耦合的設(shè)計(jì)情況? 持久層持久層服務(wù)層服務(wù)層表示層表示層緊耦合設(shè)計(jì)的缺點(diǎn)緊耦合設(shè)計(jì)的缺點(diǎn) (1) 問題:由于層與層之間沒有設(shè)計(jì)接口,而且層與層的依賴關(guān)系采用new方式等問題,當(dāng)用戶需求變更了就會引發(fā)“牽一發(fā)而動全身”可怕情形。 假如我們現(xiàn)在持久層DAO不使用JDBC技術(shù)而換成使用H

7、ibernateORM框架,添加一個DAO類即DictionaryDAOHibernateImp 會導(dǎo)致其他層的變動緊耦合設(shè)計(jì)的缺點(diǎn)緊耦合設(shè)計(jì)的缺點(diǎn) (2) 緊耦合設(shè)計(jì)的缺點(diǎn)緊耦合設(shè)計(jì)的缺點(diǎn) (3) 緊耦合設(shè)計(jì)的缺點(diǎn)緊耦合設(shè)計(jì)的缺點(diǎn) (4) 小結(jié)小結(jié) 綜上所述,上面的小例子我們看到,我們修改了數(shù)據(jù)持久層,結(jié)果導(dǎo)致了所有的層的變化,出現(xiàn)了“牽一發(fā)而動全身”可怕局面。這就是緊耦合的系統(tǒng)。 緊耦合系統(tǒng)給缺少可擴(kuò)展性和可復(fù)用性,難以單元測試。不能滿足用戶不斷變化的需求。 導(dǎo)致緊耦合原因: 層與層之間沒有設(shè)計(jì)接口,上層調(diào)用者要關(guān)心下層實(shí)現(xiàn); 層與層之間調(diào)用還是采用傳統(tǒng)new的方式。Spring如何構(gòu)建松

8、耦合的軟件系統(tǒng)如何構(gòu)建松耦合的軟件系統(tǒng) 分層設(shè)計(jì)、并通過Spring解決如下問題: 層與層之間設(shè)計(jì)接口 由框架負(fù)責(zé)依賴注入基于基于Spring的實(shí)現(xiàn)的實(shí)現(xiàn)修改持久層實(shí)現(xiàn)修改持久層實(shí)現(xiàn) 變動:由于用戶需求的變化持久層的DAO由原來使用JDBC實(shí)現(xiàn)換成使用Hibernate實(shí)現(xiàn)。 應(yīng)對:我們只需要添加一個DictionaryDAOHibernateImp實(shí)現(xiàn)類,并修改配置文件就可以了,別的不需要任何的修改。結(jié)構(gòu)圖結(jié)構(gòu)圖DictionaryDAOHibernateImp總結(jié)總結(jié) 綜上所述,使用了Spring構(gòu)建的松耦合系統(tǒng)給我們帶來的好處: 層間耦合性低 可擴(kuò)展性更強(qiáng),在用戶需求變更的情況下只需要修

9、改少量代碼就可以滿足用戶需求 。 提提 綱綱 Spring 框架介紹 Spring核心概念:IOC 和DI 基于IOC的松耦合JavaEE分層設(shè)計(jì) Spring框架體系結(jié)構(gòu)框架體系結(jié)構(gòu)Spring既是容器也是框架既是容器也是框架 由由SpringSpring負(fù)責(zé)業(yè)務(wù)邏輯負(fù)責(zé)業(yè)務(wù)邏輯 對象的實(shí)例化、初始化對象的實(shí)例化、初始化、服務(wù)(被調(diào)用)等,這是、服務(wù)(被調(diào)用)等,這是SpringSpring作為作為容器容器的的職責(zé)職責(zé) SpringSpring將大多數(shù)可重用、與業(yè)務(wù)邏輯無關(guān)的功將大多數(shù)可重用、與業(yè)務(wù)邏輯無關(guān)的功能能夠自行或交由其他組件完成,這是它作為能能夠自行或交由其他組件完成,這是它作為一

10、個一個框架框架的職責(zé)的職責(zé)Spring體系結(jié)構(gòu)體系結(jié)構(gòu)Spring與其它框架的不同與其它框架的不同 比如將比如將SpringSpring與與StrutsStruts框架,框架,HibernateHibernate框架相對框架相對比,他們的不同之處在于:比,他們的不同之處在于:SpringSpring還可以集成其它框架,它是一個還可以集成其它框架,它是一個“大大”框架框架SpringSpring是專注于企業(yè)應(yīng)用的框架,它所涉及的領(lǐng)域是專注于企業(yè)應(yīng)用的框架,它所涉及的領(lǐng)域非常之廣泛非常之廣泛StrutsStruts只是專注于實(shí)現(xiàn)只是專注于實(shí)現(xiàn)WebWeb應(yīng)用程序開發(fā)的應(yīng)用程序開發(fā)的MVCMVC部分

11、部分HibernateHibernate只是專注于數(shù)據(jù)持久層的部分只是專注于數(shù)據(jù)持久層的部分Servlet ASpring框架框架Spring可以集成可以集成Struts業(yè)務(wù)邏輯實(shí)現(xiàn) A客戶端客戶端消息服務(wù)DBWebServiceLDAP日志事務(wù)處理異常處理Struts框架框架國際化驗(yàn)證處理請求參數(shù)Servlet ASpring框架框架Spring可以集成可以集成Hibernate業(yè)務(wù)邏輯實(shí)現(xiàn) A客戶端客戶端消息服務(wù)DBWebServiceLDAP日志事務(wù)處理異常處理Struts框架框架國際化驗(yàn)證處理請求參數(shù)Hibernat框架框架Struts、Spring和和Hibernate 的整合的整合 SpringSpring是以簡化是以簡化J2EEJ2EE的應(yīng)用開發(fā)為目標(biāo)而誕生的,系統(tǒng)的應(yīng)用開發(fā)為目標(biāo)而誕

溫馨提示

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

評論

0/150

提交評論