認(rèn)識(shí)Spring.ppt_第1頁(yè)
認(rèn)識(shí)Spring.ppt_第2頁(yè)
認(rèn)識(shí)Spring.ppt_第3頁(yè)
認(rèn)識(shí)Spring.ppt_第4頁(yè)
認(rèn)識(shí)Spring.ppt_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

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

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

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

10、IOC、類型2 IOC、類型3 IOC。依賴注入(DependencyInjection )實(shí)現(xiàn)上文所述的business type2IOC,經(jīng)由配置器(即,setXXX方法)注入依賴的對(duì)象,與此相對(duì),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ù)來(lái)注入依賴對(duì)象的一個(gè)優(yōu)點(diǎn)是可以在構(gòu)造函數(shù)的同時(shí)完成依賴關(guān)系的建立,但是在建立的對(duì)象關(guān)系多的情況下,需要在構(gòu)造函數(shù)中聲明參數(shù)長(zhǎng)的列,使用配置方法來(lái)注入依賴關(guān)系setXXX ()的名稱比存儲(chǔ)和查詢由構(gòu)造函數(shù)上的參數(shù)位置表示的對(duì)象更好,因?yàn)閟etXXX的方法具有明確的方法名稱,用于理解注入對(duì)象的作用和類型。 Type1、Type1IoC是接口注入,使用Type1IoC時(shí)需要執(zhí)行接口,對(duì)象的容器也使用該接口,容器知道接口中規(guī)定的方法,所以, 可以

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

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

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論