版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、一、Spring的IoC(InversionofControl)。這是Spring中得有特點的一部份。IoC又被翻譯成“控制反轉(zhuǎn)”,也不知道是誰翻譯得這么別扭,感覺很深奧的詞。其實,原理很簡單,用一句通俗的話來說:就是用XML來定義生成的對象。IoC其實是一種設(shè)計模式,Spring只是實現(xiàn)了這種設(shè)計模式。這種設(shè)計模式是怎么來的呢?是實踐中逐漸形成的。第一階段:用普通的無模式來寫Java程序。一般初學者都要經(jīng)過這個階段。第二階段:頻繁的開
2、始使用接口,這時,接口一般都會伴隨著使用工廠模式。第三階段:使用IoC模式。工廠模式還不夠好:(1)因為的類的生成代碼寫死在程序里,如果你要換一個子類,就要修改工廠方法。(2)一個接口常常意味著一個生成工廠,會多出很多工廠類。可以把IoC模式看做是工廠模式的升華,可以把IoC看作是一個大工廠,只不過這個大工廠里要生成的對象都是在XML文件中給出定義的,然后利用Java的“反射”編程,根據(jù)XML中給出的類名生成相應(yīng)的對象。從實現(xiàn)來看,Io
3、C是把以前在工廠方法里寫死的對象生成代碼,改變?yōu)橛蒟ML文件來定義,也就是把工廠和對象生成這兩者獨立分隔開來,目的就是提高靈活性和可維護性。IoC中最基本的Java技術(shù)就是“反射”編程。反射又是一個生澀的名詞,通俗的說反射就是根據(jù)給出的類名(字符串)來生成對象。這種編程方式可以讓對象在生成時才決定要生成哪一種對象。我在最近的一個項目也用到了反射,當時是給出一個.properties文本文件,里面寫了一些全類名(包名+類名),然后,要根據(jù)
4、這些全類名在程序中生成它們的對象。反射的應(yīng)用是很廣泛的,象Hibernate、String中都是用“反射”做為最基本的技術(shù)手段。在過去,反射編程方式相對于正常的對象生成方式要慢10幾倍,這也許也是當時為什么反射技術(shù)沒有普通應(yīng)用開來的原因。但經(jīng)SUN改良優(yōu)化后,反射方式生成對象和通常對象生成方式,速度已經(jīng)相差不大了(但依然有一倍以上的差距)。所以要理解IoC,你必須先了解工廠模式和反射編程,否則對它產(chǎn)生的前因后果和實現(xiàn)原理都是無法理解透徹
5、的。只要你理解了這一點,你自己也完全可以自己在程序中實現(xiàn)一個IoC框架,只不是這還要涉及到XML解析等其他知識,稍微麻煩一些。Spring中IOC的實現(xiàn)的核心是其CeBeanFacty,它將框架內(nèi)部的組件以一定的耦合度組裝起來,并對使用它的應(yīng)用提供一種面向服務(wù)的編程模式(SOP:ServiceientProgramming),比如Spring中的AOP、以及持久化(Hibernate、ibatics)的實現(xiàn)。首先從最底層最基礎(chǔ)的fact
6、yBean開始,先來看g.springframewk.beans.facty.BeanFacty接口,它是一個非常簡單的接口,getBean方法是其中最重要的方法,Spring通常是使用xml來populateBean,所以比較常用的是XMLFactyBean。用一個簡單的示例看一下其用法。首先寫下兩個Bean類:ExampleBean類:publicclassExampleBeanprivateStringpsnName=nullpr
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論