認識Spring.ppt_第1頁
認識Spring.ppt_第2頁
認識Spring.ppt_第3頁
認識Spring.ppt_第4頁
認識Spring.ppt_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、知道Spring,個人資料,Spring的核心是輕量級(Lightweight )的容器,是實現(xiàn)IoC(InversionofControl )容器、非侵入性(Nointrusive )的框架,AOP (aspect 支持持久性、事務性、實現(xiàn)MVCWeb框架并為一般的企業(yè)服務應用接口(API )提供一致的模型包的全面應用程序f,以提供以下概念為各種現(xiàn)有框架(Struts、JSF、Hibernate等)提供了Spring集成方案。 此外,對于一些重量級容器(例如,EJB容器),輕量、輕量的表示方式使得Spring核心包的文件容量小于1MB,使用Spring核心包所需的資源負擔小,在小型設(shè)備上s

2、另外,非侵入式框架的原本目的是提供一種框架,使開發(fā)者能夠根據(jù)該框架快速開發(fā)遵循該框架所需的應用程序。 然而,當使用該框架時,應用程序可能依賴于該框架。 例如,如果大量使用該框架的API,或者直接繼承某些類型的API,那么應用組件就不能獨立于該框架了。 Spring的目標之一是幾乎讓應用感覺不到框架的存在,減輕了框架移植時的應用的負擔,進一步提高應用組件的重用性。 “容器”(Container )和“Spring”提供了容器功能,其中容器可以管理對象的生命周期以及對象與對象之間的依賴關(guān)系。 可以使用一個配置文件(通常是XML )來定義對象的名稱、生成方法(Prototype方法或Singleto

3、n方法)、需要設(shè)置生成哪些對象后成為對象的屬性等。 啟動容器后,所有的對象都可以直接使用,不需要編寫一行程序代碼來生成對象,也不需要建立對象和對象之間的依賴關(guān)系。 容器是由Java創(chuàng)建的程序,現(xiàn)在需要自己創(chuàng)建程序來管理對象關(guān)系,并自動創(chuàng)建容器。 IoC(InversionofControl )、Spring最重要的核心概念是InversionofControl,中文總是“控制逆轉(zhuǎn)”,更具體的名詞是DependencyInjection,中文總是“依賴注入”的Spring 不需要在程序代碼中維持對象的依賴關(guān)系,只需在配置文件中設(shè)置,Spring核心容器就會根據(jù)配置自動依賴于指定的對象。 另外,A

4、OP(Aspect-orientedprogramming :專用程序設(shè)計)、Spring是最受重視的,而AOP(Aspect-orientedprogramming :專用程序設(shè)計)的實現(xiàn)卻是由Spring支持的子幀Spring的IoC容器功能和AOP功能的實現(xiàn)是其重點,Spring下實現(xiàn)了持久層、MVCWeb框架和各種企業(yè)服務的API包,它們的實現(xiàn)依賴于Spring的IoC容器和AOP功能, Spring的這些子框架和包的API功能可以彼此獨立,也可以與其他框架方案組合,Spring想提供一個一停止shop框架集成方案。 持久層、Spring提供持久層的集成,例如封裝JDBC的使用,提供事

5、務(Transaction )管理功能,Spring為o/r映射工具(Hibernate,iBATIS )的集成提供了解決方案。 Web框架、Spring也提供了MVCWeb框架的解決方案。 使用SpringWeb框架的優(yōu)點是,利用IoC和AOP的功能,可以輕松地替換各種View層技術(shù),如JSP、Tiles的組合,以及使用PDF作為向用戶展示的畫面技術(shù)等。 可以將眾所周知的Web框架(如Struts、JSF )與Spring集成,也可以與Spring集成,以應用于當前應用程序。對于其他企業(yè)服務的封裝、JNDI、Mail、調(diào)度和遠程等服務,Spring不是直接提供實現(xiàn),而是通過將服務封裝在抽象層

6、來將這些服務反向控制(InversionofControl ),Spring的核心概念是IoC,IoC的抽象概念是“依存關(guān)系的遷移”,遷移對于過去不良的應用程序設(shè)計,例如“上位模塊不應該依賴于下位模塊,模塊必須依賴于抽象“實現(xiàn)必須依賴于抽象,抽象必須依賴于實現(xiàn)”也是IoC的表示,“應用程序不應該依賴于容器,容器服務于應用程序”也是IoC的表示。 另外,控制反轉(zhuǎn),簡單來說,上層的抽象模塊不依賴于下層的實現(xiàn)模塊,并且通常是與業(yè)務邏輯相關(guān)聯(lián)的模塊。 例如,低級模塊是與硬件相關(guān)的軟盤訪問設(shè)計,高級模塊是磁盤備份的程序要求,并且當高級模塊直接執(zhí)行低級模塊的函數(shù)時,這些模塊與低級模塊具有依賴性。 如果以面

7、向?qū)ο蟮姆绞皆O(shè)計控制反轉(zhuǎn),那么依賴反轉(zhuǎn)的解釋被解釋為“程序不依賴于實現(xiàn),而依賴于抽象接口”。 但是,不能直接重復使用商務艙或控制翻轉(zhuǎn)。 您可以首先定義IDeviceWriter界面,并控制翻轉(zhuǎn)和翻轉(zhuǎn)。 如果應用程序需要Floppy存儲,則Businessbusiness=newBusiness (); business.setdevicewriter (newfloppywriter (); business.save (); 同樣,如果應用程序需要USB磁盤存儲,則Businessbusiness=newBusiness (); business.setdevicewriter (newus

8、bdiskwriter (); business.save (); 另外,控制反轉(zhuǎn)(InversionofControl ),IoC的控制是控制的意思,實際上背后的意思也是依存關(guān)系的轉(zhuǎn)移,a依存于b,則該意思是b具有控制權(quán),想轉(zhuǎn)移該關(guān)系,所以依存關(guān)系的反轉(zhuǎn)是控制從實現(xiàn)控制權(quán)的一方轉(zhuǎn)移到抽象的一方,薯使抽象的一方具有控制權(quán),可以重用組件,在上述的Java程序中,整個控件從實際的loppyWriter轉(zhuǎn)移到抽象的IDeviceWriter界面, Business依賴于IDeviceWriter界面,軟盤寫入器、USB磁盤寫入器也依賴于IDeviceWriter界面??刂品崔D(zhuǎn)(Inversionof

9、Control )、程序的業(yè)務邏輯部分必須設(shè)計成可再利用,不受所使用的框架和容器的影響,所以將來將整個應用程序的業(yè)務邏輯轉(zhuǎn)移到其他框架和容器中IoC是容器的角度,可以用好萊塢的名言表示為“Dontcallme,Illcallyou .”。 按程序術(shù)語來說,“容器不需要必要的(對象)資源,容器會自動將這些對象交給你”,依賴注入,要實現(xiàn)IoC,需要依賴注入依賴注入的意思是“保持抽象接口,使組件依賴于抽象接口,如果組件與其他實際對象具有依賴關(guān)系,則通過抽象接口注入依賴的實際對象”。 委托注入在MartinFowler的文章中,敘述了接口注入、setter注入、結(jié)構(gòu)注入三種實現(xiàn)方法。 分別稱為類型1

10、IOC、類型2 IOC、類型3 IOC。依賴注入(DependencyInjection )實現(xiàn)上文所述的business type2IOC,經(jīng)由配置器(即,setXXX方法)注入依賴的對象,與此相對,Type3IoC根據(jù)構(gòu)筑式注入依賴關(guān)系。 例如,publicclassbusinessobject 私有edevicewriterwiter; publicbusinesssobject (idevicewriterwriter ) this.writer=writer; publicvoidseave () writer.savetoddevice (); 、依賴注入(DependencyIn

11、jection )、Spring建議使用設(shè)定器injection(type2ioc ),但也可以使用設(shè)定器或Constructor完成依賴注入。 使用構(gòu)造函數(shù)來注入依賴對象的一個優(yōu)點是可以在構(gòu)造函數(shù)的同時完成依賴關(guān)系的建立,但是在建立的對象關(guān)系多的情況下,需要在構(gòu)造函數(shù)中聲明參數(shù)長的列,使用配置方法來注入依賴關(guān)系setXXX ()的名稱比存儲和查詢由構(gòu)造函數(shù)上的參數(shù)位置表示的對象更好,因為setXXX的方法具有明確的方法名稱,用于理解注入對象的作用和類型。 Type1、Type1IoC是接口注入,使用Type1IoC時需要執(zhí)行接口,對象的容器也使用該接口,容器知道接口中規(guī)定的方法,所以, 可以

12、調(diào)用實現(xiàn)接口的對象來完成依賴關(guān)系的注入,例如,在容器的API中使用idependency:publicinteraceidependency publicovidcreatedependency (mapdependob ,使Type1、Business類實現(xiàn)IDependency接口: publicclassusinessimplementidependency privateemapdependobjects; /記錄依賴對象的publicvoidcreateddependency (mapdependobjects ) this.depend object=depend objects;

13、 /在這里實現(xiàn)與業(yè)務的依存關(guān)系. 2222222222222222222226 要完成注入了依存關(guān)系的對象,必須實施IDependency接口并將其放在容器中進行管理。 容器通過對受管理對象執(zhí)行createDependency ()方法來完成依賴關(guān)系的建立。 另外,由于Business要求實現(xiàn)容器中界定的接口,所以Type1、Type1IoC依賴于容器的API。 將來,在Business打算從當前容器脫離到另一容器或幀的情況下,應修改過程。 在這種實現(xiàn)方法中,以更復雜的依賴性生成更復雜的接口,組件和容器(幀)之間的依賴性變得更復雜,最后組件不能從容器脫離。 因此,Type1IoC對應用程序和組件具有很強的入侵性,如果

溫馨提示

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

評論

0/150

提交評論