spring88174_第1頁(yè)
已閱讀1頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、一、Spring的IoC(InversionofControl)。這是Spring中得有特點(diǎn)的一部份。IoC又被翻譯成“控制反轉(zhuǎn)”,也不知道是誰(shuí)翻譯得這么別扭,感覺(jué)很深?yuàn)W的詞。其實(shí),原理很簡(jiǎn)單,用一句通俗的話(huà)來(lái)說(shuō):就是用XML來(lái)定義生成的對(duì)象。IoC其實(shí)是一種設(shè)計(jì)模式,Spring只是實(shí)現(xiàn)了這種設(shè)計(jì)模式。這種設(shè)計(jì)模式是怎么來(lái)的呢?是實(shí)踐中逐漸形成的。第一階段:用普通的無(wú)模式來(lái)寫(xiě)Java程序。一般初學(xué)者都要經(jīng)過(guò)這個(gè)階段。第二階段:頻繁的開(kāi)

2、始使用接口,這時(shí),接口一般都會(huì)伴隨著使用工廠模式。第三階段:使用IoC模式。工廠模式還不夠好:(1)因?yàn)榈念?lèi)的生成代碼寫(xiě)死在程序里,如果你要換一個(gè)子類(lèi),就要修改工廠方法。(2)一個(gè)接口常常意味著一個(gè)生成工廠,會(huì)多出很多工廠類(lèi)??梢园袸oC模式看做是工廠模式的升華,可以把IoC看作是一個(gè)大工廠,只不過(guò)這個(gè)大工廠里要生成的對(duì)象都是在XML文件中給出定義的,然后利用Java的“反射”編程,根據(jù)XML中給出的類(lèi)名生成相應(yīng)的對(duì)象。從實(shí)現(xiàn)來(lái)看,Io

3、C是把以前在工廠方法里寫(xiě)死的對(duì)象生成代碼,改變?yōu)橛蒟ML文件來(lái)定義,也就是把工廠和對(duì)象生成這兩者獨(dú)立分隔開(kāi)來(lái),目的就是提高靈活性和可維護(hù)性。IoC中最基本的Java技術(shù)就是“反射”編程。反射又是一個(gè)生澀的名詞,通俗的說(shuō)反射就是根據(jù)給出的類(lèi)名(字符串)來(lái)生成對(duì)象。這種編程方式可以讓對(duì)象在生成時(shí)才決定要生成哪一種對(duì)象。我在最近的一個(gè)項(xiàng)目也用到了反射,當(dāng)時(shí)是給出一個(gè).properties文本文件,里面寫(xiě)了一些全類(lèi)名(包名+類(lèi)名),然后,要根據(jù)

4、這些全類(lèi)名在程序中生成它們的對(duì)象。反射的應(yīng)用是很廣泛的,象Hibernate、String中都是用“反射”做為最基本的技術(shù)手段。在過(guò)去,反射編程方式相對(duì)于正常的對(duì)象生成方式要慢10幾倍,這也許也是當(dāng)時(shí)為什么反射技術(shù)沒(méi)有普通應(yīng)用開(kāi)來(lái)的原因。但經(jīng)SUN改良優(yōu)化后,反射方式生成對(duì)象和通常對(duì)象生成方式,速度已經(jīng)相差不大了(但依然有一倍以上的差距)。所以要理解IoC,你必須先了解工廠模式和反射編程,否則對(duì)它產(chǎn)生的前因后果和實(shí)現(xiàn)原理都是無(wú)法理解透徹

5、的。只要你理解了這一點(diǎn),你自己也完全可以自己在程序中實(shí)現(xiàn)一個(gè)IoC框架,只不是這還要涉及到XML解析等其他知識(shí),稍微麻煩一些。Spring中IOC的實(shí)現(xiàn)的核心是其CeBeanFacty,它將框架內(nèi)部的組件以一定的耦合度組裝起來(lái),并對(duì)使用它的應(yīng)用提供一種面向服務(wù)的編程模式(SOP:ServiceientProgramming),比如Spring中的AOP、以及持久化(Hibernate、ibatics)的實(shí)現(xiàn)。首先從最底層最基礎(chǔ)的fact

6、yBean開(kāi)始,先來(lái)看g.springframewk.beans.facty.BeanFacty接口,它是一個(gè)非常簡(jiǎn)單的接口,getBean方法是其中最重要的方法,Spring通常是使用xml來(lái)populateBean,所以比較常用的是XMLFactyBean。用一個(gè)簡(jiǎn)單的示例看一下其用法。首先寫(xiě)下兩個(gè)Bean類(lèi):ExampleBean類(lèi):publicclassExampleBeanprivateStringpsnName=nullpr

溫馨提示

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

評(píng)論

0/150

提交評(píng)論